Les 2 - Arduino programma's uitgelegd.

Als je een nieuw Arduino programma of 'sketch' begint. Ziet het er als volgt uit: leeg programma 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()