bouncer2, длительное нажатие кнопки

yden
Offline
Зарегистрирован: 30.01.2016

Здравствуйте.

Подскажите пожалуйста. Ардуино нано, подключена к дверному звонку. Библиотека bouncer2. Хочу чтобы при длительном нажатии кнопки (5 сек.) выполнялась следующая строка: client.publish("ihouse/gadget/ring/duration", "1");

Зараза, мне кажется он не заходит в конструкцию: if (currentMillis_ringDuration - previousMillis_ringDuration < 5000) 

В коде есть ошибка? Или как вывести длительность нажатия кнопки?

//проверка состояния кнопки звонка
  if (debouncer5.update())
  {
    if (debouncer5.fell())
    {
      previousMillis_ringDuration = currentMillis_ringDuration;
    }

    
    //факт отпускания
    if (debouncer5.rose())
    {
      if (currentMillis_ringDuration - previousMillis_ringDuration < 5000)
        {
          previousMillis_ring = currentMillis_ring;
          if (flag_ring == false) 
          {
            client.publish("ihouse/gadget/ring", "1");
            flag_ring = true;
          }
        }
        else
        {
          if (flag_ring == false)
          {
            client.publish("ihouse/gadget/ring/duration", "1");
          }
        }
    }
  }

  if (currentMillis_ring - previousMillis_ring > interval_ring && flag_ring == true)
  {
    flag_ring = false;
  }

благодарю

kalapanga
Offline
Зарегистрирован: 23.10.2016

В этом кусочке кода вообще нет ни одного вызова millis(). Что здесь за константы/переменные используются в строках 6, 13, 32 - неизвестно. Как считаются эти 5 секунд - непонятно. Нужен более осмысленный, полный кусок кода.