# 1ste programma

In het 1ste programma laten we een de ingebouwde led op de arduino UNO knipperen. De ingebouwde led is verbonden met pin 13.

# Delen in het programma

Er zijn 3 belangrijke delen in ons eerste arduino programma:

  • Definiëren van globale variabelen.
  • Alles wat 1 maal uitgevoerd wordt. Voorbeeld instellen pinnen.
  • Alles wat steeds moet herhaald worden.

1ste arduino programma

# Invoer

Voer het eerste arduino programma in. Een mogelijk resultaat.

1ste arduino programma

# Bespreking

# Setup ()

De setup() functie wordt één keer aangeroepen wanneer het programma start. Deze wordt gebruikt om pin modes te initialiseren of opzetten seriële communicatie.

De syntax ziet er als volgt uit:

void setup() {
  pinMode(13, OUTPUT);  //maak van pin 13 een uitgang
}
1
2
3

# Loop ()

Nadat de setup() functie aangeroepen is volgt de loop() functie. Deze wordt constant doorlopen om vervolgens te reageren door veranderingen.
De loop functie is een oneindige lus.

void loop() {
  digitalWrite(13, HIGH);   
  // LED aan (HIGH is logisch "1")
  delay(1000);// wacht 1 seconde
  digitalWrite(13, LOW);    
  // LED uit (LOW is logisch "0")
  delay(1000);// wacht 1 seconde
}

1
2
3
4
5
6
7
8
9

Een grafische voorstelling in flowcode van bovenstaande programma.

Grafische voorstelling van een lus in flowcode

# { } krullende haakjes (accolade)

Krullende haakjes geven het begin of het einde aan van een functieblok zoals je ook tegenkomt bij de functie void loop() en void setup(). Het aantal accolades is altijd een even getal.

void loop() {  
  // code
  			{// code
			}
}
1
2
3
4
5

Let daar goed op want één accolade te weinig en een heel programma kan stoppen met werken.

{ te kort

# ; puntkomma

Een puntkomma moet gebruikt worden na elke ingevoerde opdracht. Voorbeeld:

digitalWrite(13, HIGH);
1

Opmerking: Vaak is het zo dat het ontbreken van een puntkomma ervoor zorgt dat de Arduino software niet wil compileren en een error aangeeft op een andere plek dan waar de puntkomma vergeten is. Dat wordt dus lastig zoeken.

; te kort

# /*… */ blok commentaar

Blok commentaar zijn gebieden met tekst die door het programma genegeerd worden. Tussen de /* en */ staat meestal uitleg over het programma of over de code die daar staat. Commentaar wordt nooit mee geprogrammeerd in de microcontroller. Het neemt dus geen geheugenruimte in beslag. Natuurlijk wordt het wel bewaard in het Arduino programma.

Blok commentaar

# // regel commentaar

Een regel die begint met // en eindigt met tekst of code zal op die regel genegeerd worden. Ook dit neemt geen geheugen in de microcontroller in beslag. Code voor in de regel gevolgd door // zal wel uitgevoerd worden alles wat na de // komt op die regel echter niet.

Blok commentaar

# pinMode(pin, mode)

Deze ingebouwde functie wordt meetal gebruikt in de void setup() om een specifieke pin te configureren als een INPUT of een OUTPUT en mag niet vergeten worden.

Voorbeeld:

pinMode(pin, OUTPUT);  //maak van “pin” een uitgang
pinMode(pin, INPUT);  //maak van “pin” een ingang
1
2

Opdrachten:

Vul onderstaande regel code aan om pin 13 als uitgang te plaatsen:

pinMode (………………………………………………….);
1

Vul onderstaande regel code aan om pin 12 als ingang te plaatsen:

pinMode (……………………………………………………….);
1

# digitalWrite(pin, value)

Deze ingebouwde functie digitalWrite maakt een specifieke pin hoog of laag.

digitalWrite(pin, HIGH);   // maak 'pin' hoog
digitalWrite(pin, LOW);   // maak 'pin' laag   
1
2

Opdracht:

Vul onderstaande regel code aan om pin 13 hoog te maken.

digitalWrite (…………………………..…………..);
1

# delay(ms)

De ingebouwde functie delay(x) last een pauze van x milliseconden in.

Voorbeeld:

delay(1000); // wacht een seconde   
1

# Voorbeeldprogramma

void setup() {
  pinMode(13, OUTPUT);  //maak van pin 13 een uitgang
}

void loop() {
  digitalWrite(13, HIGH);   
  // LED aan (HIGH is logisch "1")
  delay(1000);// wacht 1 seconde
  digitalWrite(13, LOW);    
  // LED uit (LOW is logisch "0")
  delay(1000);// wacht 1 seconde
}
1
2
3
4
5
6
7
8
9
10
11
12

# Compileren en doorsturen

Het programma bewaren, compileren en in de arduino laden.

Compileren en doorsturen

# Oefeningen

  • Schrijf een programma om de ingebouwde led op de arduino uno (pin 13) te laten knipperen met een aan tijd van 500 ms en een uit tijd van 1 seconde.

  • Bouw op een breadboard een schakeling om een rode led te laten knipperen (aan tijd 500 ms en uit tijd 500 ms) verbonden met pin 10 van de arduino.

Teken hoe de externe led met voorschakelweerstand aangesloten wordt.

Arduino UNO met breadboard

  • Bouw een morse code generator waarbij de morse code doorgezonden wordt met de ingebouwde LED op de arduino. Morsecode bestaat uit korte en lange signalen met daartussen een korte pauze. Elke letter en elke cijfer heeft zijn eigen combinatie. De code werd uitgevonden door Samuel Morse (1835) en is een soort voorloper van de digitale communicatie. Stuur in morse code het bericht SOS door.

Een kort lichtsignaal duurt 100 ms, een lang lichtsignaal duurt 300 ms, de pauze na elke letter is 500 ms en de pauze na elk woord is 1000 ms.

Morse code