Проблема с HC-SR04
- Войдите на сайт для отправки комментариев
Вс, 29/07/2012 - 03:12
Использовал скетч из примера:
int inputPin=4; // Echo int outputPin=5; // Trig void setup() { Serial.begin(9600); pinMode(inputPin, INPUT); pinMode(outputPin, OUTPUT); } void loop() { digitalWrite(outputPin, LOW); delayMicroseconds(2); digitalWrite(outputPin, HIGH); delayMicroseconds(10); digitalWrite(outputPin, LOW); int distance = pulseIn(inputPin, HIGH); distance= distance/58; Serial.print(distance); Serial.println(" "); delay(500); }
Проблема в том что он мне постоянно выдает до 10 см, уменьшив значение delay(500); будет буолее менне правильно считать, до 3 метров, но проскакивают хначения в 5 см. например 154 152 151 5 5 5 145 и т.д.
Вот не пойму сломан или что-то не так делаю?
Можно предположить две причины (причем взаимоисключащие ;) :
1. На малых дистанциях начинает терять "начало эхо". То есть ответ начинает приходить пока оно еще стоит на строке 27.
2. Наоборот. Он "слышит" сам себя. Работу излучателья воспринимает как "эхо". Тогда в строку 30-ть нужно воткнуть какую-то маленькую задержечку.
Но я-бы попробовал не "ковырятся с этим" (переходить на таймеры и прерывания), а попробовать нагуглить стандартную библиотеку для работы с ним. Кажись она называется Ultrasonic . Возможно в ней все уже реализованно "по грамотному".