/* Toggle-schakelaar
Met een toggle-functie kun je met dezelfde handeling een actuator
zowel in- als uitschakelen. Voorbeeld:
knop kort indrukken, LED aan, knop kort indrukken, LED uit etc.
Verbind de drukknopschakelaar met +5V en pin D2
Verbind een pull-down weerstand tussen D2 en GND
Gebruik de on-board LED L op poort D13 als LED
*/
// Twee constanten vertegenwoordigen pinnen D2 en D13:
const int buttonPin = 2; // Pinnummer drukknopschakelaar (D12)
const int LedPin = 13; // Pinnummer LED (D13)
// Variabele vertegenwoordigt status van de drukknopschakelaar:
int buttonState = 0;
// Twee extra variabelen voor de toggle-functie
int teller = 0; // teller telt aantal knopindrukken
int buttonState_oud = 0; // vorige status van de drukknop
void setup() {
// Initialiseer digitale poort D13 als uitgang (OUTPUT):
pinMode(LedPin, OUTPUT);
// Initialiseer digital poort D2 als ingang (INPUT):
pinMode(buttonPin, INPUT);
}
void loop() {
// Lees de status van de drukknopschakelaar:
buttonState = digitalRead(buttonPin);
// vergelijk de status met de vorige status
if (buttonState != buttonState_oud) {
// als de status is veranderd, controleer dan HOE
if (buttonState == 1) {
// is de verandering van UIT naar AAN
// verhoog dan de teller met 1:
teller=teller+1;
} else {
// is de verandering van AAN naar UIT
}
// Pauzeer na elke knopindruk om bouncing te elimineren
delay(50);
}
// pas de status aan voor de volgende loop
buttonState_oud = buttonState;
// schakel LED aan of uit op basis van teller
if (teller % 2 == 0) {
digitalWrite(LedPin, HIGH);
} else {
digitalWrite(LedPin, LOW);
}
}