Добрый день. Подскажите что делаю не так? Есть 10 датчиков HC-SR04. Покупал года 2-3 назад для одного проекта, который так и не был реализован. Сейчас решил попробовать датчики с Arduino. Все датчики выдают разные данные. Некоторые вообще отказываются работать на расстоянии более 20 см. Один работает на 1.5м. По характеристикам должны работать до 4м. Запускаю с помощью библиотеки Ultrasonic Результат смотрю через монитор порта. Вот сам скетч: // // Ultrasonic HR-SC04 sensor test // // http://robocraft.ru // #include "Ultrasonic.h" // sensor connected to: // Trig - 12, Echo - 13 Ultrasonic ultrasonic(8, 9); void setup() { Serial.begin(9600); // start the serial port } void loop() { float dist_cm = ultrasonic.Ranging(CM); // get distance Serial.println(dist_cm); // print the distance delay(100); // arbitary wait time. }
попробуйте этот // --------------------------------------------------------------------------- // Example NewPing library sketch that does a ping about 20 times per second. // --------------------------------------------------------------------------- #include <NewPing.h> #define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor. #define ECHO_PIN 11 // Arduino pin 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. void setup() { Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results. } void loop() { 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"); } ссылка на библиотеку: http://playground.arduino.cc/Code/NewPing#.UzGBePl_sXw
Спасибо. Интересный результат получается: Если смотреть по нижней границе графика, то почти точно определяется расстояние.