De Arduino
microcontroller programmeer je met een gemakkelijk te leren commandotaal. De
basisstructuur is gebaseerd op de programmeertaal C++.
Basisstructuur
De
basisstructuur van de Arduino programmeertaal bestaat uit minimaal twee
gedeeltes, ook wel functies genoemd:- void setup(): dit gedeelte verzorgt de voorbereiding. Het wordt één keer aangeroepen, direct na het opstarten van het programma. Hierin worden variabelen gedeclareerd en bepaald welke pinnen ingang of uitgang worden.
- void loop(): dit gedeelte verzorgt de uitvoering. Het volgt na de setup functie en wordt vaak oneindig herhaalt. Het leest de inputs en laat afhankelijk daarvan bepalen wat de outputs moeten doen.
{}
(accolade): een open
accolade{ geeft het begin van een stuk code aan en een sluit accolade } het
einde. Het aantal open en sluit accolades moet gelijk zijn. Als er één accolade
te weinig is, kan het programma stoppen met werken
;
(puntkomma): elke regel
code moet eindigen met een puntkomma. Bij het ontbreken van een puntkomma zal
een foutmelding verschijnen. Deze foutmelding geeft vaak een andere plek aan
dan waar de puntkomma vergeten is. Dat wordt dus lastig zoeken.
// (regel
commentaar): zet zoveel
mogelijk commentaar bij je code met uitleg over het programma of over de code
die daar staat. Dit doe je door een regel te beginnen met //. Commentaar wordt
niet gelezen door het programma. Het wordt nooit mee geprogrammeerd in een
microcontroller en neemt hierdoor geen geheugenruimte in beslag. Het wordt wel
bewaard in het Arduino programma.
/*...*/
(blok commentaar): voor
langere regels commentaar over meerdere regels, kun je gebruik maken van blok
commentaar. Hiervoor zet je het commentaar tussen /* en */. Ook dit wordt
allemaal niet gelezen door het programma.
Als een
programma niet werkt, zoals het zou moeten werken, dan is het vaak handig om
een gedeelte van het prgramma uit te schakelen door middel van regel of blok
commentaar. Je kunt dan stapsgewijs onderzoeken waar de fout zit.
variabelen: met behulp van een variabele kun
je een waarde bewaren voor later gebruik in het programma. De waarde van een
variabele kan ook regelmatig veranderen. Er zijn ook constantes. Dat zijn
variabelen die constant het zelfde blijven en dus nooit van waarde veranderen.
Het beste kun je de variabelen een logische naam geven, zodat het een stuk
makkelijker te lezen is.
Voordat een
variabele gebruikt kan worden, moet deze eerst éénmalig gedeclareerd worden.
Er zijn
verschillende types variabelen: int (integer), long (long), boolean (boolean),
float (float) en char (character).
Het maken
van een uitgebreid programma
Je begint
altijd met het opdelen een subsystemen (bij hele uitgebreide programma's zelfs
naar sub-subsystemen). Vervolgens ga je eerst per subsysteem de hardware in
elkaar zetten en dan de programmering. Let erop dat je er zoveel mogelijk
commentaar bijzet zodat je goed overzicht houdt van wat elk stukje code doet.
Als alle subsystemen werken, neem je één subsysteem en die breidt je uit met
een van de andere subsystemen. Als deze werkt voeg je nog een subsysteem toe
enzovoorts tot dat je programma werkt.
TIP: er
staat al heel veel op internet. Ga eerst zoeken voordat je zelf begint. Als
jouw code nog niet bestaat kun je online ook altijd vragen om tips om hem te
maken.
Programma
werkt niet wat nu ( fouten zijn heel normaal bij Arduino):
- Controleer of het groene lampje brand op het board.
- Controleer of de hardware klopt. Een fout hierin is meestal snel te zien. Vraag zo nodig iemand anders om te controleren.
- Controleer heel je programma. Let vooral op de puntkomma aan het einde van een regel code. Ook hier weer laat iemand anders nakijken als je het zelf niet ziet.
- Je kan je probleem ook online zetten. Er zijn altijd genoeg mensen die je willen helpen en tips zijn altijd meegenomen.
- Ga terug naar het testen van subsystemen en volg opnieuw de stappen hierboven.
- Als dit allemaal niet werkt, bouw de code weer op maar begin met een ander subsysteem. Het kan zijn dat er dus een fout zit bij het combineren van de codes.
- Als laatste poging kan je altijd helemaal overnieuw beginnen. Heel raar maar soms voer je precies hetzelfde in en dan doet die het wel.
// initialize the serial communication
Serial.begin(9600);
// initialize the ledPin as an output
pinMode(ledPin, OUTPUT);
}
void loop()
{byte brightness;
// check if data has been sent from the
computer
if (Serial.available()) {
// read the most recent byte (which will be from 0 to 255)
brightness = Serial.read();
// set the brightness of the LED
analogWrite(ledPin, brightness);
}
}