Приветствую. Изначально было сделано вот так: Код (C++): if (distance_sm>115&&distance_sm<125) //если расстояние от 115см. до 125см. то выключить { digitalWrite(rele1, 0); } else { digitalWrite(rele1, 1); delay(5000); } Иногда "выпадает человек" или приходят не верные расстояния. Отключается свет(моргает). как сделать проверку? например если расстояние равно if то проверить это еще 2-3 раза дали подсказку: Код (C++): byte counter = 0; // счетчик измерений byte maxCounter = 10; // количество измерений for (byte i = 0; i < maxCounter; i++) // несколько раз измеряем расстояние { if (0 == distance_sm) Serial.print("\tSONAR NOT DETECTED!"); else Serial.print(dist); Serial.print(", "); if (distance_sm > 115 && distance_sm < 125) counter++; // если расстояние от 115см. до 125см, то плюсуем счетчик delay(200); } Serial.println(); if (maxCounter == counter && distance_sm > 0) // если число срабатываний равно числу попыток, то выключить { digitalWrite(rele1, LOW); } else { digitalWrite(rele1, HIGH); delay(5000); } то есть снятия показаний несколько раз, но в этом случае приходят следующие данные: Код (Text): 379 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 165 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 167 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 233 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, как я понимаю снятия показаний делаются почти мгновенно без паузы как я бы хотел). Суть затеи в том что когда показание расстояния между 115см и 125см делалась проверка еще раз через 1-5 секунд и если последовательность положительных проверок достигла 3-5 раз подряд то выключаем реле. а если между ними было <115см и >125см то повторять проверку сначала. Спасибо.
В цикле нет нескольких измерений, одна и та же переменная мусолится несколько раз. Странно, что вы не заметили это по результатам которые сами же привели.
Как уже было сказано, в цикле нет измерений Код (C++): for (byte i = 0; i < maxCounter; i++) // несколько раз измеряем расстояние { distance_sm = ultraleft.Ranging(CM); //[B]измеряем расстояние[/B] if (0 == distance_sm) Serial.print("\tSONAR NOT DETECTED!");