Проблема с 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 . Возможно в ней все уже реализованно "по грамотному".