#define PIN_LED 3
#define BUTTON 6
// Een omschrijving van wat je code moet doen is altijd
// wel handig aan het begin van je programma. Zo weet een
// andere programmeur wat je wil bereiken.
// Deze code kan enkel je led aan doen.
// Dat was niet je bedoeling denk ik.
// Ik dacht dat je een aan-uit-knop wou (toggle)
// in je schema heb ik de tweede niet gebruikte weerstand verwijderd.
// Ik zie dat je een variabele maakt knop (en knop1 niet echt nodig).
// wat wil je daar bewaren?
// verder in je programma zie ik dat je er de 'gelezen' waarde van de BUTTON wil bewaren.
// Vaag die je dan moet stellen is... wak kan die waarde zijn?
// DIGITALread -> dus enkel 1 en 0 of HIGH en LOW...
// Om die waarde op te slaan heb je een 'bool' nodig, geen int
// een bool neemt 32 tot 64 keer minder geheugen in.
// int KNOP = HIGH; -- beter een bool en geen hoofdletters gebruiken voor Variabelen
bool knop;
// zodra de loop begint wordt er een waarde in de knop gestoken, je moet dat hie nog niet doen
// int KNOP1 = HIGH; //Deze doe ik weg, die heb je niet nodig
bool statusLed;
void setup() {
pinMode(PIN_LED, OUTPUT);
pinMode(BUTTON, INPUT);
}
void loop() {
knop = digitalRead(BUTTON);
if (knop == HIGH) { // de knop is ingedrukt
// je wil dan eigenlijk de led de toestand geven die ze niet heeft:
// je drukt op de knop om een led die aan is uit te doen
// of je drukt op de knop om een led die uit is aan te doen.
// Akkoord?
// wat is op dit moment de status van de led (is ze aan of uit)
// kan ik lezen hé
statusLed = digitalRead (PIN_LED);
// met het uitroepteken kan ik een status omdraaien:
// HIGH == !LOW
// Dus als ik de status lees van de led en die zou bijvoorbeeld HIGH kunnen zijn
// m.a.w. na het commando : statusLed = digitalRead (PIN_LED);
// heeft statusLed de waarde HIGH.
// dat wil dan ook zeggen dat !stausLed dan het omgekeerde is : LOW
// LOW hebben we nodig want de Led die juist aan was willen we nu uit doen
// we moeten dus eigenlijk een LOW schrijven naar de PIN_LED
digitalWrite(PIN_LED, !statusLed);
}
/*
Dit is overbodig geworden
LET OP deze code werkt niet goed in de praktijk, je zal merken dat de
knop moeilijk schakeld... heeft allemaal met dat bouncen te maken.
Dat leren we nog oplossen
KNOP1 = digitalRead(BUTTON);
if (KNOP1 == HIGH) {
digitalWrite(PIN_LED, LOW);
}
*/
}