Przycisk chwilowy z Arduino
Przycisk chwilowy to jeden z podstawowych komponentów analogowych stosowany w robotyce i automatyce. Przyciski chwilowe występują w wersji NO – Normally Open oraz NC – Normally Closed. W arduino zazwyczaj ustawia się go w trybie pulldown lub pullup za pomocą rezystora 10k / 20k. Pulldown ściąga stan na niski (rezystor jest połączony z GND), a pullup podnosi stan na wysoki (rezystor jest połączony z 5V).
Dodatkowo można zastosować kondensator o małej pojemności, aby wykluczyć zjawisko drgania styków przycisku (debouncing).
Wykrywanie pojedynczych kliknięć wymaga dodatkowych zabiegów, np. poprzez sprawdzanie poprzedniego i aktualnego stanu przycisku.
Zliczanie kliknięć przycisku chwilowego
bool btnPrevState = false;
int counter = 0;
int btnPin = 4;
void setup() {
btnPrevState = digitalRead(btnPin);
Serial.begin(9600);
}
void onClick() {
bool btnNowState = digitalRead(btnPin);
if (btnNowState == 1 && btnPrevState == 0) {
counter++;
Serial.println(counter);
}
btnPrevState = btnNowState;
}
void loop() {
onClick();
}
Przycisk chwilowy z millis
const int bounce = 200;
unsigned long lastClickedTime = 0;
int counter = 0;
int btnPin = 4;
void setup() {
Serial.begin(9600);
}
void checkButton() {
if (digitalRead(btnPin) == HIGH) {
if (millis() - lastClickedTime > bounce) {
lastClickedTime = millis();
counter++;
Serial.println(counter);
}
}
}
void loop() {
checkButton();
}
Przycisk chwilowy z filtrem dolnoprzepustowym RC
int counter = 0;
void setup(){
Serial.begin(9600);
}
void loop(){
if(analogRead(A0) == 1){
counter++;
Serial.println(counter);
}
}
Zobacz: Funkcje czasowe z millis Arduino