Arduino - Расчет времени, в течение которого кнопка нажата и удерживается без отпускания

Я работаю над проектом, который требует расчета времени, в течение которого кнопка удерживается нажатой без отпускания. Есть ли фрагмент кода, который я могу использовать для этой конкретной потребности?

, 👍1


1 ответ


1

Существует библиотека под названием "Debounce", которую вы можете найти здесь: playground.arduino.cc. На основе этой библиотеки вот простой скетч, который отображает время нажатия кнопки.

// Подключите один конец кнопочного переключателя NO к GND, а другой
// конец к выводу 4 Arduino.
// ПРИМЕЧАНИЕ: Если кнопка удерживается нажатой меньше времени, чем задержка устранения дребезга
// время, прошедшее время отобразит время задержки устранения дребезга.
#include <Debounce.h>
const byte SWITCH = 4;
unsigned long startTime = 0;
unsigned long endTime = 0;
unsigned long elapsedTime = 0;
const byte debounceDelayTime = 50;

Debounce debouncer = Debounce(debounceDelayTime, SWITCH);

void setup(){
  Serial.begin(9600);
  pinMode(SWITCH, INPUT_PULLUP);
}

void loop(){
  if(debouncer.update()){
    if(debouncer.read() == 0){
      startTime = millis();
      Serial.println("Button Pressed");
    }
    else if(debouncer.read() == 1){
      endTime = millis();
      Serial.println("Button Released");
      elapsedTime = endTime - startTime;
      Serial.print("Button Held Down For ");
      Serial.print(elapsedTime);
      Serial.println(" ms.");
    }
  }
}
,