Некорректная работа ультразвукового датчика HC-SR04
- Войдите на сайт для отправки комментариев
Чт, 30/01/2020 - 18:27
Собираю конструктор-робота SunFounder Sloth Robot. Подключаю датчик по инструкции (ссылка на картинку прилагается). Всё время в мониторе порта выдаёт расстояние до объекта 0cm. Буду благодарен за помощь!
Ссылка на изображение: https://imgur.com/a/c9keYY9
код выкладывайте, как вы работаете с датчиком
Скачал с сайта разработчика готовый скетч. Также здесь используется библиотека NewPing:
#include <Servo.h> #include <NewPing.h> Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; int i = 0; #define TRIGGER_PIN 4 // Arduino pin 4 tied to trigger pin on the ultrasonic sensor. #define ECHO_PIN 3 // Arduino pin 3 tied to echo pin on the ultrasonic sensor. #define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm. NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance. //#define SERVO #define ULTRASONIC void setup() { myservo1.attach(9); // Connect the signal wire of servo to pin 9 myservo2.attach(10); // Connect the signal wire of servo to pin 10 myservo3.attach(11); // Connect the signal wire of servo to pin 11 myservo4.attach(12); // Connect the signal wire of servo to pin 12 Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results. } void loop() { #ifdef ULTRASONIC delay(50); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings. unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS). Serial.print("Ping: "); Serial.print(uS / US_ROUNDTRIP_CM); // Convert ping time to distance in cm and print result (0 = outside set distance range) Serial.println("cm"); #endif #ifdef SERVO for ( i = 0; i < 180; i++ ) { myservo1.write(i); myservo2.write(i); myservo3.write(i); myservo4.write(i); delay(20); } for ( i = 180; i > 0; i-- ) { myservo1.write(i); myservo2.write(i); myservo3.write(i); myservo4.write(i); delay(20); } #endif }для начала выкинь всю порнографию и проверь работу датчика первым скетчем отсюда: http://wiki.amperka.ru/продукты:hc-sr04-ultrasonic-sensor-distance-module
Хорошо, спасибо. Если проблема не решится, то отпишу снова!)
Датчик работает, но показывает расстояние только при отключенном состоянии (всегда 140-150cm). Нумерацию пинов Trig и Echo выставил в соответствии с цоколёвкой платы, на которой стоит сама плата Arduino Nano.
Скетч, по которому делал:
#include <NewPing.h> #define TRIGGER_PIN 4 #define ECHO_PIN 3 #define MAX_DISTANCE 400 NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); void setup() { Serial.begin(9600); } void loop() { delay(50); Serial.print("Ping: "); Serial.print(sonar.ping_cm()); Serial.println("cm"); }Датчик работает, но показывает расстояние только при отключенном состоянии (всегда 140-150cm).
#include <NewPing.h> #define TRIGGER_PIN 4 #define ECHO_PIN 3 #define MAX_DISTANCE 400 NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); void setup() { Serial.begin(9600); } void loop() { delay(50); Serial.print("Ping: "); Serial.print(sonar.ping_cm()); Serial.println("cm"); }выкинь всю порнографию и проверь работу датчика первым скетчем отсюда: http://wiki.amperka.ru/продукты:hc-sr04-ultrasonic-sensor-distance-module
При подключении к пинам датчик все время показывает 0cm, а если отключен от них, то показывает 140-150cm.
Плата Arduino Nano стоит на плате, как на картинке (ссылка ниже). Такие проблемы могут возникнуть из-за того, что цоколёвка жёлтой платы и цоколёвка Ардуино не совпадают?
https://imgur.com/a/l3jxmQw
При подключении к пинам датчик все время показывает 0cm, а если отключен от них, то показывает 140-150cm.
Плата Arduino Nano стоит на плате, как на картинке (ссылка ниже). Такие проблемы могут возникнуть из-за того, что цоколёвка жёлтой платы и цоколёвка Ардуино не совпадают?
https://imgur.com/a/l3jxmQw
При подключении к пинам датчик все время показывает 0cm, а если отключен от них, то показывает 140-150cm.
Плата Arduino Nano стоит на плате, как на картинке (ссылка ниже). Такие проблемы могут возникнуть из-за того, что цоколёвка жёлтой платы и цоколёвка Ардуино не совпадают?
https://imgur.com/a/l3jxmQw
Ну а сам ты как думаешь?
подключи датчик к пинам D4 и D3 платы нано - для начала напрямую.
потом можно буде с твоей желтой платой разбираться.
Датчик исправен. Значит, что-то с той самой желтой платой. Может быть такое, что цоколёвка гнёзд под контакты Нано не совпадает с цоколёвкой самой Нано?
Датчик исправен. Значит, что-то с той самой желтой платой. Может быть такое, что цоколёвка гнёзд под контакты Нано не совпадает с цоколёвкой самой Нано?
Датчик исправен. Значит, что-то с той самой желтой платой. Может быть такое, что цоколёвка гнёзд под контакты Нано не совпадает с цоколёвкой самой Нано?
К сожалению, нет(
Датчик исправен. Значит, что-то с той самой желтой платой. Может быть такое, что цоколёвка гнёзд под контакты Нано не совпадает с цоколёвкой самой Нано?
К сожалению, нет(
А глаза есть?
Я создал тему для решения проблемы, а не для остроумных гиков.
Для решения проблемы Вам нужен мультиметр, а не саркастический ответ.
Для решения проблемы Вам нужен мультиметр, а не саркастический ответ.
Я например очень часто умею глазами проследить
куда идёт дорожка на плате....
Я попробую посмотреть на той плате дорожки