Les 2 - Arduino programma's uitgelegd.
Als je een nieuw Arduino programma of 'sketch' begint. Ziet het er als volgt uit: Dit programma bestaat dus uit drie delen.
Commentaar
Commentaar is alleen voor jezelf. Het helpt je herinneren wat de bedoeling is van de code.
/*
Dit programma laat een lichtje knipperen
*/
De Arduino kijkt hier niet naar, dus je mag het ook weglaten. Commentaar mag ook tussen de code door met // ervoor.
// Dit programma laat een lichtje knipperen
Setup
De setup code wordt maar één keer uitgevoerd, zodra de Arduino opstart. Er mag maar één setup zijn per programma.
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.
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.
Variabelen
Er is nog een deel van het programma wat nog niet van tevoren is ingevuld. Dat zijn de variabelen. Dit zijn een soort vooraf afspraken met de code.
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 plak waar je dit kunt doen. Deze plek is meestal nog voor de setup().
Dus een compleet programma ziet er zo uit:
/*
Twee knipperende LED's
*/
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
Waarom toch al 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.
{
{
{
}
}
}
Een stukje voorbeeldprogramma kan dus zijn: Let op dat je altijd een sluitaccolade hebt bij een
void loop()
{ // accolade open loop
for (int i = 0; i<10; i++)
{ // accolade open for() stapjes
if (i > 5)
{ // accolade open als i > 5
digitalWrite(rood, HIGH);
digitalWrite(groen, LOW);
} // accolade sluiten if()
else
{ // accolade open niet i > 5
digitalWrite(rood, LOW);
digitalWrite(groen, HIGH);
} // accolade sluiten else()
} // accolade sluiten for()
} // accolade sluiten loop()