Ультразвуковой дальномер для грузовиков в очереди, Нужна помощь

macter403
Offline
Зарегистрирован: 24.08.2016

Доброго времени суток, товарищи.
Описание устройства которое хочу сделать:
допустим стоишь в очереди на КАМАЗе( а стоять приходится много) впереди стоящий авто продвигается дальше, а я в этот момент сплю.
Подскажите, пожалуйста, какой оператор использовать, если расстояние больше 70см в течении 60сек, тогда уже включить реле, а то HC-SR04 глючный и реле будет срабатывать не всегда в нужный момент.
int Relay = 5;
int Relay2 = 6;
long duration, cm;
void setup() {
pinMode(3, OUTPUT);
pinMode(4, INPUT);
pinMode(Relay, OUTPUT);
pinMode(Relay2, OUTPUT);
Serial.begin(9600);
}

void loop() {
digitalWrite(3, LOW);
delayMicroseconds(2);
digitalWrite(3, HIGH);
delayMicroseconds(10);
digitalWrite(3, LOW);

duration = pulseIn (4, HIGH);
cm = duration/29/2;
if (cm<70)
{

}
else
{
digitalWrite(Relay, LOW); // реле включено
delay(5000);
digitalWrite(Relay, HIGH); // реле выключено
delay(2000);
}
Serial.print(cm);
Serial.print("cm");
Serial.println ();
delay(500); // задержка цикла
}

dmitron1036
Offline
Зарегистрирован: 10.01.2016

>какой оператор использовать, если расстояние больше 70см в течении 60сек,

ответ: нет такого оператора.

1) допустим loop() выполняется раз в 10 секунд

2) допустим раз в 60 секунд вы находите среднее между результатами измерений расстояния, т.е. по 6 выборкам

3) если это среднее больше уставки - пищим.

в данном случае оператор if.