Выполнение условия при изменении данных

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем robotehnika18, 21 сен 2018.

  1. robotehnika18

    robotehnika18 Нерд

    Помогите реализовать функцию.

    Необходимо включить светодиод (для примера) при одинаковых данных с датчика наклона в течении нескольких секунд. Проблема в том, что данные постоянно меняются и могут совпасть.

    Нужно включать светодиод не при изменении данных, а при одинаковых условиях (в определенном диапазоне) в течении 15 секунд.

    Спасибо.
     
  2. parovoZZ

    parovoZZ Гуру

    Это противоречит следующему
     
  3. Mitrandir

    Mitrandir Гуру

    датчик наклона как подключается? По и2с?

    Псевдокод:
    Код (Text):
    Time =now()
    last =readSensor()
    while(1){
      curent = readSensor();
      if (current<> last) {
             time = now()
             last = current;
             ledOff();
             continue;
      }
       last = current;
      if( now() - time >= 15000) {
          time = now();
          ledOn();
      }
       }
     
  4. Mitrandir

    Mitrandir Гуру

    Тс хочет так : если 15 секунд данные не менялись то диод горит. Если изменились то гаснет
     
  5. robotehnika18

    robotehnika18 Нерд

    Датчик наклона подключается к аналоговому входу
     
  6. robotehnika18

    robotehnika18 Нерд

    Все правильно. А в течении 15 секунд Ардуино выполняет другие операции
     
  7. Mitrandir

    Mitrandir Гуру

    Если к аналоговому то проще. Повесить прерывание. в обработчике сбрасываем глобальный флаг. Каждые 15 сек смотрим сбросилмя ли флаг или нет
     
  8. robotehnika18

    robotehnika18 Нерд

    Можете подробнее объяснить термин "сбрасываем глобальный флаг". Спасибо
     
  9. Mitrandir

    Mitrandir Гуру

    Присваиваем ему 0
     
  10. parovoZZ

    parovoZZ Гуру

    Ну тогда через флаг и таймер его активности.
     
  11. robotehnika18

    robotehnika18 Нерд

    Взял простой датчик движения. Спасибо
     
  12. b707

    b707 Гуру

    то есть слился, исходную задачу решить не смог?