ArduinoBLINK

Ons allereerste project, spannend! We gaan een eenvoudig programma gebruiken, zodat een LED zal gaan knipperen. Dit gaan we doen zonder zelf een regel te hoeven te typen, tenminste als je de standaard code gaat gebruiken. En anders typ je het gewoon zelf over. In de IDE zit een setje voorbeeld programma's. We gaan een van deze voorbeeld programmaatjes gaan we gebruiken.

  • Klik op "Bestand"
  • Klik op "Voorbeelden"
  • Klik op "01.Basics"
  • En dan op "Blink"

Er zal een nieuw venster openen met hierin de sketch (programma) van het Blink programma. Het eerste deel is een groot stuk commentaar, tussen de /* en */ tekens, commentaar zijn geen commando's en zullen niet worden uitgevoerd. Scroll in de IDE naar beneden en daar is de code. Je ziet dat de code een andere kleur heeft als de programma code.

Commentaar is grijs. De programma code is zwart, oranje en groen. Het kleuronderscheid voor de verschillende mogelijkheden. Ik heb de code voor de leesbaarheid iets aangepast.

Als je deze code wilt proberen, kopier dan de code in onderstaand blok en zet deze in je eigen editor zetten.

/*
  Blink

  (C) copyright www.punthooft.nl 2019-2024 
*/

// Constants
const int ledRed = 2;

// Setup function runs once when powerup the board and on reset 
void setup() {

  // Initialize LED as an output.
  pinMode(ledRed, OUTPUT);

}

// The loop function runs over and over again forever
void loop() {

  digitalWrite(ledRed, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                  // wait for a second
  digitalWrite(ledRed, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                  // wait for a second

}


ArduinoWalkthru

We lopen door de code heen. De code begint met een stuk commentaar tussen /* en */ tekens. Dat negeren we even.

// Constants
const int ledRed = 2;

De regel die begint met 2 slashes // is ook commentaar, alles achter de slashes is commentaar. Op de 2e regel maken we een constante met de naam ledRed waarin een 2 komt te staan. Dit wil zeggen dat onze LED is aangesloten op positie 2. Het is een goed gebruik om dit soort instellingen bovenin het programma op te nemen.
De term const wil zeggen dat het een constante is. De waarde blijft constant en zal niet veranderen. Sterker nog, het is niet eens toegestaan om deze waarde aan te passen. Het woordje int wil zeggen dat het een integer is. Een integer is een heel getal (zonder iets achter de komma). Hier maken we een constante variabele van het type integer met de waarde 2 en noemen deze ledRed. Onderin gaan we dit gebruiken.

// Setup function runs once when powerup the board and on reset 
void setup() {

  // Initialize LED as an output.
  pinMode(ledRed, OUTPUT);

}

Allereerst een commentaar regel. Dan een regel van de setup() functie. setup() is een functie die alleen bij de start van het programma zal worden uitgevoerd. Een (1) keer precies.

Het enige commando dat in deze setup staat, is het pinMode commando. We geven hier aan dat de pin op het adres in ledRed een uitgaande pin is. De waarde van de ledRed hebben we hierboven ingesteld. Kortom we zeggen hier dat pin 2 uitgaande is.

// The loop function runs over and over again forever
void loop() {

...

}

Allereerst weer een commentaar regel. Dan een regel van de loop() functie. loop() is de naam van functie die continue zal worden uitgevoerd. Iedere keer opnieuw. Dit zal oneindig door blijven gaan. In de functie op de plaats van de puntjes staat de code die iedere keer zal worden uitgevoerd.

  digitalWrite(ledRed, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                  // wait for a second
  digitalWrite(ledRed, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                  // wait for a second

De code in de loop() functie heeft geen commentaar ervoor. In plaats daarvan staan achter de commando's het commentaar voorafgegaan door 2 slashes. Alles na de slashes op die regel is commentaar.

Het eerste commando is een digitalWrite. We schrijven naar de pin ledRed (nummer 2 zoals we hierboven hebben aangegeven) een HIGH voltage waarde. Met andere woorden, we zetten stroom op deze pin en als de aansluiting goed is, dan zal de LED gaan branden.

De volgende regel is een Delay, wat Engels is voor vertraging. Hier vertragen we 1000 milliseconden. Dat is precies 1 seconde. Het programma zal een seconde lang hier gaan staan wachten. Er gebeurd niets. De stroom die we hierboven met de digitalWrite op de pin ledRed hebben gezet blijft wel gewoon lopen. De LED is vrolijk aan het branden.

We komen nu weer bij nog een digitalWrite. We schrijven weer naar de pin ledRed (nog steeds nummer 2) een LOW waarde. Hiermee zetten we de stroom op deze pin uit en hierdoor zal de LED uitgaan. Omdat we een delay van 1 seconde hadden hierboven was de LED dus 1 seconde aan.

Dan komt er weer een Delay van 1000 milliseconden. Waarin we wachten, terwijl de LED dus niet brand.

We zijn nu op het einde van de loop gekomen. Het programma zal loop'en (=overnieuw beginnen) en weer bovenaan beginnen. Dat is weer een digitalWrite die de LED zal laten branden.

Samengevat de acties die gebeuren:

  • Zet LED aan
  • Wachten
  • Zet LED uit
  • Wachten
  • Zet LED aan
  • Wachten
  • Zet LED uit
  • Wachten
  • ...etc

We hebben een knipperlicht gemaakt.



ArduinoAansluiten

Nu hebben we heel leuk het programma naar het Arduino bordje geupload. Maar verder gebeurd er nog niets. We gaan nu de onderdelen aansluiten. Daarvoor gebruiken we onderstaand schema.