Arduino project 02: van LEDs naar Rood, Goud, en Groen
Terminologie in het Nederlands voor gebruikers van het Engelstalig Arduino Projects Book bij de starter kit.
Aangevuld met een variant op het beschreven project (02 in Arduino IDE Examples, 10 Starterkit)
Project 02
In het tweede project worden 2 rode leds en één groene gestuurd vanuit het programma; het detecteren van een knopdruk verandert de loop van het programma en de toestand van de leds.
Arduino’s digitale verbindingen hebben de mogelijkheid om zowel voor invoer gebruikt te worden, als voor uitvoer, mits anders gedefinieerd vanuit het programma.
Terminologie:
High: hoog, dat betekent dat er spanning op zit of gezet wordt.
Low: laag, dat betekent dat er geen spanning op zit of gezet wordt.
Programmeercode
Dit is het eerste project waarin geprogrammeerd wordt. De basis van zowat elk Arduino programma bestaat uit twee procedures, één om instellingen te doen, en één voor het lopen van het programma (eindeloos herhalen, vandaar “loop” of in een kringetje draaien), meestal bestaat het uit iets meten en reageren.
void setup(){
// code
}
void loop(){
// code
}
Je kan dit bewaren als “leegproject.ino”, en hiervan telkens beginnen.
Syntax
Commmentaar volgt achter twee schuine streepjes, code wordt meestal afgesloten met een puntkomma en structuren worden begrenst door accolades. Void betekent dat er geen waarde teruggegeven wordt door de procedure. Variabelen worden voorafgegaan door hun type bij declaratie.
Variant
Als de middelste rode led vervangt door een gele, krijg je rood-geel-groen, de kleuren en volgorde van een verkeerslicht.
Door een paar aanpassingen aan het programma laat je de gele led knipperen als begintoestand, en vanaf de druk op de knop gaat een aantal keer de gewone verkeerscyclus gevolgd worden met rood, groen, kort oranje en weer rood.
CODE …
int switchState = 0;
int delayWhile = 6500; // milliseconds
int delayShort = 1000; // milliseconds
void setup(){
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(2,INPUT);
}
void loop(){
switchState = digitalRead(2);
if (switchState == LOW) {
// the button is not pressed
digitalWrite(3, LOW);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
delay(delayShort);
digitalWrite(4, LOW);
delay(delayShort);
}
else {
for(int x=1; x<3; x++){
// toggle the leds
// orange
digitalWrite(3, LOW);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
delay(delayShort);
// red
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
delay(delayWhile);
// green
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
delay(delayWhile);
}
}
// end
}