Projects4edu

Digitale input met Arduino

Na de LED aan en uitschakelen kan je er ook een knop (of digitale input in het algemeen) bij betrekken. Ook hier is een voorbeeldprogramma beschikbaar. Om dit voorbeeldprogramma te openen ga je naar BESTAND -> VOORBEELDEN -> 2. DIGITAL -> BUTTON.

Onderstaande is een voorbeeldprogramma, je moet 2 vervangen door het nummer waar een drukknop op is aangesloten op het KAEDU shield en 13 moet je vervangen door een nummer waar een LED op is aangesloten op het KAEDU shield.
Bijvoorbeeld verander je 2 naar 12 (de meest rechtse drukknop) en 13 naar 3 (rode led nr2)
Later geven we de voorkeur aan de naam BUTTON4 ipv buttonPin en LEDR2 ipv ledPin

Bekijk het testprogramma om op deze manier te weten te komen wat de locatie is van de 4 drukknoppen, de schakelaar en de 6 LEDS. Op deze manier kan je dit programma testen met verschillende LEDS en drukknoppen.

const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}

Hier zie je meteen het gebruik van de tip bij het startprogramma om bovenaan te schrijven welke input en output met de pin verbonden is in plaats van overal de pin te vermelden. Op deze manier kan je bovenaan het nummer veranderen zonder te moeten zoeken waar overal het nummer is vermeld.

Een tweede nieuwigheid is dat men hier ook int Buttonstate = 0 schrijft. Dit doet men om de toestand van de knop op te slaan en met deze opgeslagen toestand verder te werken. Buttonstate is namelijk de naam van een geheugen waar men in eerste instantie de waarde 0 in stopt. Er zijn verschillende soorten geheugens net zoals er bij het versturen van een pakket ook verschillende soorten doosjes zijn. Bij doosjes is omdat het te versturen materiaal allemaal een andere grootte heeft, bij geheugens is dit net hetzelfde. Het type int wordt veelvuldig gebruikt.

Je ziet nu dat er bij setup naast een output nu ook een input vermeld word.

In plaats van direct de output aan te sturen gaat men nu eerst naar de toestand van de knop kijken. Om een led aan of uit te sturen gebruikte men digitalWrite, om van een knop te kijken of hij aan of uit is zal men dus gelijkaardig digitalRead gebruiken. Als het programma deze instructie uitvoert en de knop was op dat moment niet ingedrukt dan zit er een 0 in het geheugen ButtonState, was de knop wel ingedrukt dan was dit een 1.

Naast een knop inlezen en de led aan te sturen gebruikt men in dit voorbeeld ook al direct een controlestructuur, dit is om afhankelijk van de toestand van een geheugen andere code uit te voeren. In dit voorbeeld stelt men de vraag of de knop ingedrukt is IF = ALS en HIGH = INGEDRUKT. Is dit het geval dan voert men de code uit tussen {}
In dit geval is dat de LED aanzetten.

Je krijgt dus in de Nederlandse taal de volgende zin : Als de drukknop is ingedrukt zet je de LED aan.

Achter die code volgt de zin ELSE = ANDERS. Met andere woorden in het andere geval doe je wat bij de Else tussen {} staat. In dit geval is dat de LED uitschakelen.

Je krijgt dus in de Nederlands taal de volgende zin : In het andere geval zet je de LED uit.

Het totale programma zal dus de toestand van de knop bekijken en dan als de drukknop ingedrukt is de LED aanzetten en als dit niet het geval is de LED uitzetten. Aangezien dat programma in loop staat zal dit continu herhaald worden. Met andere woorden vanaf je de knop loslaat gaat de LED uit en vanaf je hem indrukt gaat de LED aan.

TIPS :

Je kan ervoor zorgen dat je een groene en rode led kan gebruiken door bij setup 1 zin bij te plaatsen ? In de loop moet je dan 2 zinnen bij plaatsen.
Je kan dan bij de code die uitgevoerd wordt bij de IF bijvoorbeeld de groene led aanzetten en de rode led uit.
In het geval dat de knop niet ingedrukt is (dus bij Else) kan je dan de groene led uitzetten en de rode led aan.

ONDERZOEK :

– Test eens uit wat het gevolg is als je de 3 lijnen van else{ } in commentaar zet.
Zet deze lijnen daarna terug uit commentaar.
– Test eens uit als je schrijft buttonState == LOW
– Test eens uit als je schrijft buttonState != LOW

Volgende les : uitleg over de controlestructuren (if, if else, if else if)

Je hebt net kennis gemaakt met de controlestructuur IF ELSE, wil je meer controlestructuren leren dan kan je deze tutorial volgen.

Vorige les : Gebruik maken van de Arduino software

Hoe je de Arduino software kan gebruiken wordt hier uitgelegd.

Mobiele versie afsluiten