Pentru a folosi unul sau mai multe butoane in conditii bune impreuna cu Arduino va trebui ca pentru fiecare buton sa facem un debounce, mai pe intelesul tuturor va trebui sa anulam din software eventualele oscilatii inchis-deschis create de catre buton in timpul actionarii acestuia. Debounce se poate face relativ usor folosind exemplul dat chiar de catre dezvoltatorii Arduino in aceast tutorial.
Codul folosit este relativ simplu de utilizat, dar, daca vom folosi mai multe butoane, va creste complexitatea sketchului. Pentru a evita acest lucru si pentru a face un sketch cat mai simplu vom folosi o librarie care ne ajuta sa simplificam codul sursa. Aceasta librarie se numeste DebounceInput si poate fi descarcata de aici.
In urmatorul exemplu vom folosi 4 butoane conectate de la D2 la D5 impreuna cu cate un rezistor PULL-UP pentru fiecare.
Rezultatul apasarii acestor butoane le vom vedea in terminalul serial iar sketchul folosit este cel e mai jos:
#include <DebounceInput.h>
DebouncedInput pin1;
DebouncedInput pin2;
DebouncedInput pin3;
DebouncedInput pin4;
int buton1 = 2;
int buton2 = 3;
int buton3 = 4;
int buton4 = 5;
void setup() {
pinMode(buton1, INPUT);
pin1.attach(buton1);
pinMode(buton2, INPUT);
pin2.attach(buton2);
pinMode(buton3, INPUT);
pin3.attach(buton3);
pinMode(buton4, INPUT);
pin4.attach(buton4);
Serial.begin(9600);
Serial.println("Functie debouncing butoane");
delay(1000);
}
void loop() {
pin1.read();
pin2.read();
pin3.read();
pin4.read();
if (pin1.falling()) {
Serial.println("butonul 1 este apasat");
delay(500);
}
if (pin2.falling()) {
Serial.println("butonul 2 este apasat");
delay(500);
}
if (pin3.falling()) {
Serial.println("butonul 3 este apasat");
delay(500);
}
if (pin4.falling()) {
Serial.println("butonul 4 este apasat");
delay(500);
}
}