ARDUINO Два вопроса от новичка по коддингу ардуино.

vortexRC

✩✩✩✩✩✩✩
31 Окт 2019
11
6
Здравствуйте, задаюсь двумя вопросами, подскажите, пожалуйста, на них ответы, буду признателен.

1) Как задать такое условие с помощью кода? "Включить светодиод, если показания датчика на протяжении 1 минуты равняется нулю." Я так понимаю, что-то на подобии "digitalWrite (svetodiod, 1) for ...." должно получиться.

2) Как сгладить работу кода? Сейчас у меня есть код адаптивного света для радиоуправляемой машинки. Если значение с датчика света больше чем 200, фары горят, если ниже чем 200 фары потухают. Но бывает, что уровень освещение таков, что датчик дает значение то 199, то 201 много раз в секунду, и получается, что светодиод моргает. Как можно решить этот вопрос?

Спасибо за внимание.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,159
1,267
Москва
1) нет такого условия на прямую...
надо делать многоходовку.
1. Если показание датчика не 0, то запоминаем текущее время.
2. Если текущее время минус запомненное время из п.1 больше 60000 (а это и есть 1 минута) то делай что нужно и будет что будет.
хм.. какая то короткая многоходовка получилось..

2) если ссылаться на этот сайт, то у Алекса есть видос о фильтрации значений.. но в данном случае можно сделать несколько вещей.
1. Снять 5,10, несколько показаний с датчика, усреднить их и этим значением работать.
2. Ввкести гистерезис (всегда доволен собой, когда умудряюсь ввернуть умное слово). Короче делать так, если значение датчика больше 203, то включать фары, если меньге 197 - выключать. а вот на отрезке 197-203 руками не трогать! Фары не будет менять свое состояние.
 
  • Лойс +1
Реакции: vortexRC

vortexRC

✩✩✩✩✩✩✩
31 Окт 2019
11
6
1) нет такого условия на прямую...
надо делать многоходовку.
1. Если показание датчика не 0, то запоминаем текущее время.
2. Если текущее время минус запомненное время из п.1 больше 60000 (а это и есть 1 минута) то делай что нужно и будет что будет.
хм.. какая то короткая многоходовка получилось..

2) если ссылаться на этот сайт, то у Алекса есть видос о фильтрации значений.. но в данном случае можно сделать несколько вещей.
1. Снять 5,10, несколько показаний с датчика, усреднить их и этим значением работать.
2. Ввкести гистерезис (всегда доволен собой, когда умудряюсь ввернуть умное слово). Короче делать так, если значение датчика больше 203, то включать фары, если меньге 197 - выключать. а вот на отрезке 197-203 руками не трогать! Фары не будет менять свое состояние.
Понял вас, рад помощи. А можете показать как будет выглядеть код в первом вопросе?
"текущее время минус запомненное время из п.1 больше 60000 (а это и есть 1 минута) то делай что нужно и будет что будет"