HC-SR04 лаги

latunev
latunev аватар
Offline
Зарегистрирован: 06.02.2018

Когда провожу рукой перед датчиком бывает что значения падают, но после того как руки уже нет перед датчиком значения не возвращаются на стандартную позицию. И чтобы они вернулиь необходимо потрести перед ним рукой какое-то время.

Вот как тут:

157 50 95 157 157 48 97 48 96 50
95 158 48 48 99 47 48 156 157 48
98 158 106 157 157 157 157 157 157 157
157 157 157 157 157 157 157 157 157 71
72 74 71 75 71 75 71 73 72 73 //тут он увидел руку
71 74 71 74 71 73 72 73 73 74
71 74 72 74 72 73 73 74 72 73
72 75 73 74 74 72 74 72 75 72
73 73 73 73 73 72 73 72 73 73
71 74 72 73 72 73 73 73 74 72
72 74 73 73 73 72 74 72 74 72
73 72 74 72 75 71 75 71 74 72
73 73 73 73 74 72 73 72 73 73// а где-то тут ее уже нету перед ним
72 73 72 73 72 73 73 73 73 74
70 77 69 78 68 78 68 79 67 78
66 77 69 76 70 75 71 75 71 75
70 76 70 76 70 76 70 76 70 76
69 78 68 77 69 77 69 77 69 76
68 77 69 76 70 76 70 76 70 76
68 77 69 75 70 75 70 75 71 75
70 74 72 74 73 73 73 73 73 73
72 74 72 75 71 74 72 75 72 75
69 75 70 74 72 73 73 72 76 70
75 71 75 71 76 71 76 70 76 70
 

В чем проблема, как это можно исправить?

latunev
latunev аватар
Offline
Зарегистрирован: 06.02.2018

Программа многократно изменялась, но проблема эта оставалась, сейчас алгоритм получения этих значений вот такой:

  digitalWrite(trig, 0);
  delayMicroseconds(2);
  digitalWrite(trig, 1);
  delayMicroseconds(10);
  digitalWrite(trig, 0);
  double rast = pulseIn(echo, HIGH) / 58;
  return round(rast);

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

latunev, а какой таймаут у Вашего pulseIn?

latunev
latunev аватар
Offline
Зарегистрирован: 06.02.2018

?

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

???
Я за вас почитаю....

http://arduino.ru/Reference/PulseIn
pulseIn(pin, value, timeout)
timeout (опционально): время ожидания сигнала (таймаут) в микросекундах; по умолчанию - одна секунда. (unsigned long)