/* CVO De Verdieping: Arduino
Sketch: Knop en led met geheugen functie uitdieping 2
Oefening 3.12.2
Je drukt op de knop en de led verandert van toestand.
Met ontdendering met millis en functie
Houtmeyers Patrick
2023
*/
// CONSTANTEN
const int PIN_KNOP = 7; // drukknop op pin 7
const int PIN_LED = 12; // led op pin 12
const unsigned int DENDER_TIJD = 50; //ms, de ontdendertijd
// VARIABELEN
int knopWaarde = LOW;
int vorigeKnopWaarde = LOW;
unsigned long knopTijd = 0; //ms, het tijdstip dat we naar de knop gaan kijken
unsigned long huidigeTijd = 0; //ms, het tijdstip dat we de loop beginnen
// VOORBEREIDING
void setup()
{
pinMode(PIN_KNOP, INPUT); // pin 7 input
pinMode(PIN_LED, OUTPUT); // pin 12 ouput
}
// UITVOERING
void loop()
{
// INVOER
huidigeTijd = millis();
// VERWERKING
if (huidigeTijd > knopTijd) // lang genoeg gewacht, tijd voor actie
{
knopTijd = knopTijd + DENDER_TIJD;
knopWaarde = digitalRead(PIN_KNOP);
if ((knopWaarde == HIGH) and (vorigeKnopWaarde == LOW)) // Als de knop ingedrukt WORDT ...
{
flipLED(PIN_LED);
}
vorigeKnopWaarde = knopWaarde; // update de variabele zodat we bij de volgende loop() de
// vorigeKnopWaarde overeenkomt met die van de huidige loop()
}
}
// FUNCTIE DEFINITIES
void flipLED(const int PIN)
{
int pinWaarde = digitalRead(PIN);
pinWaarde = not pinWaarde;
digitalWrite(PIN, pinWaarde);
}