Les 2 - Arduino programma's uitgelegd.
Het programma
In deze les kijken we hoe een Arduino programma eigenlijk werkt. Je hoeft de voorbeelden niet in te voeren, maar probeer te begrijpen hoe het in elkaar zit. Je mag het natuurlijk wel invoeren als je wil experimenteren.
Je programma of 'sketch' uit les 1 ziet er ongeveer als volgt uit: Het programma bestaat dus uit drie delen.
Commentaar
// Dit programma laat een lichtje knipperen
Misschien heb commentaar in je programma, misschien niet. Commentaar is alleen voor jezelf. Het helpt je herinneren wat de bedoeling is van de code. De Arduino kijkt hier niet naar, dus je mag het ook weglaten. Maar als je programma wat ingewikkelder word is het toch wel handig.
Variabelen
Dit zijn een soort vooraf afspraken met de Arduino.
int rood = 9;
int oranje = 10;
int groen = 11;
Variabelen zijn een soort doosjes met een naam, waar iets in zit. Hier vertel je dat bijvoorbeeld in het doosje rood het getal 9 zit. Als je dus later weer rood noemt, zal de Arduino weten dat je eigenlijk 9 bedoeld. Dit lijkt omslachtig, maar is handig als later je programma wat ingewikkeld wordt. Je hoeft dan niet steeds te onthouden dat je rode LED aan pin 9 zat. En als je het later eens wil veranderen heb je één centrale plek waar je dit kunt doen. Deze plek is dus nog voor de setup().
setup
Bij de setup begint het programma echt. De setup code wordt maar één keer uitgevoerd, zodra de Arduino opstart.
void setup()
{
// Pin van de Arduino's als uitgang (OUTPUT) voor LED
pinMode(rood, OUTPUT);
pinMode(oranje, OUTPUT);
pinMode(groen, OUTPUT);
}
Alles tussen de accolades { en } hoort bij de setup, In dit geval de pinMode voor de gebruikte LED lampjes.
Let op! Er mag maar één setup zijn per programma.
loop
De loop code komt na de setup en blijft zich oneindig herhalen. Ook nu weer hoort alles tussen de accolades { en } bij de loop. Er mag dus geen code meer na de laatste accolade }.
void loop()
{
digitalWrite(rood, HIGH); // Stroom op pin rood (LED aan)
delay(1000); // Wacht 1000ms
digitalWrite(rood, LOW); // Geen stroom op pin rood
delay(1000); // Weer 1000ms, daarna herhalen
}
In deze loop wordt een LED lampje aangezet, daarna doet de Arduino 1000 milliseconden niks. Dan gaat de LED weer uit en wacht de Arduino weer 1000 milliseconden. Daarna begint de loop weer van voor af aan.
Let op! na de laatste accolade van de loop mag er niks meer komen. De Arduino blijft immers eindeloos tussen de accolades van de loop runnen.
Compleet programma
Dus een compleet programma ziet er zo uit:
int links = 13; // pin 13 is links
int rechts = 12; // pin 12 is rechts
void setup()
{
pinMode(links, OUTPUT); // pin links (13) is uitgang
pinMode(rechts, OUTPUT); // pin rechts (12) is uitgang
}
void loop()
{
digitalWrite(links, HIGH); // links aan)
digitalWrite(rechts, LOW); // rechts uit
delay(1000); // wacht 1 seconde
digitalWrite(links, LOW); // links uit
digitalWrite(rechts, HIGH); // rechts aan
delay(1000); // wacht 1 seconde
}
Accolades, accolades, accolades
Nog even over die {accolades}. Accolades maken een groepje van een aantal commando's. Dus bijvoorbeeld alle commando's die bij setup of bij loop horen. Een openings { heeft altijd een sluit }. Binnen een groepje kun je weer kleinere groepjes hebben. Om duidelijk te maken welke accolades bij elkaar horen en welke code bij elkaar hoort laten we de accolades inspringen. Dus extra spaties zoals hieronder.
{
{
{
}
}
}
Nog een voorbeeld.
Het onderstaande voorbeeldprogramma hoef je niet helemaal te begrijpen, maar probeer te snappen hoe de accolades werken:
void loop()
{ // begin loop{}
for (int i = 0; i<10; i++)
{ // begin for()
if (i > 5)
{ // begin als i > 5
digitalWrite(rood, HIGH);
digitalWrite(groen, LOW);
} // einde if()
else
{ // begin niet i > 5
digitalWrite(rood, LOW);
digitalWrite(groen, HIGH);
} // einde else()
} // einde for()
} // einde loop()