Commit f375a445 by Risto Heinsar

Added complete debounce demo with time of click

parent 3a560d19
Showing with 68 additions and 0 deletions
#define BUTTON_PIN 2
const unsigned long debounceDelay = 30;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if (ButtonRead())
{
Serial.print("Nupp vajutati ");
Serial.print(millis() / 1000.0);
Serial.println(" s käivitusest");
}
}
bool ButtonRead(void)
{
/* Nupu olek eelnevast funktsiooni käivitamisest, kasutame stabiliseerimiseks */
static bool lastButtonState = LOW;
/* Viimase nupu oleku muutuse tuvastatud aeg, kasutame stabiliseerimiseks */
static uint32_t lastDebounceTime = 0;
/* Eelmine stabiilne nupu olek, vajalik nupu all hoidmisel korduste vältimiseks */
static bool buttonState = LOW;
/* Vaikimisi eeldame, et nupp pole vajutatud enne kui kontrollime */
bool returnVal = LOW;
/* Loeme nupu oleku */
bool btnReadValue = digitalRead(BUTTON_PIN);
/* Tuvastame kui nupu väärtus on muutunud eelmisest korrast */
if (btnReadValue != lastButtonState)
{
/* Uuendame millal viimati nupu olek muutus */
lastDebounceTime = millis();
}
/* Kui nupu olek on piisavalt kaua olnud stabiilne (muutusteta, ei "võngu") */
if ((millis() - lastDebounceTime) > debounceDelay)
{
/* Väldib uue nupuvajutuse saatmise kuniks nupp pole lahti lastud vahepeal */
if (btnReadValue != buttonState)
{
/* Uuendame viimast stabiilset nupu olekut */
buttonState = btnReadValue;
/* Tagab, et kui nupp on vajutatud, siis tagastatakse HIGH väärtus ehk vajutatud
* Lihtsustatud kujult: if (buttonstate == HIGH) returnVal = HIGH
*/
returnVal = buttonState;
}
}
/* Funktsiooni korduse jaoks vajalik, et tuvastada nupu oleku muutus järgmisel korral */
lastButtonState = btnReadValue;
return returnVal;
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment