Arduino lessen/les 1

Uit Lab
Naar navigatie springen Naar zoeken springen
Arduino lessen
  1. Blink - digitale uitvoer
  2. Button - digitale invoer
  3. Dimmer - PWM
  4. Dimmer - analoge invoer
  5. Seriële uitvoer naar host
  6. Analoge sensoren
  7. Beweging: servo
  8. Button - event
  9. Tijd - timers
  10. Blink - met timer

Opdracht 1. Blink (digitale uitvoer)

De eerste opdracht is "Blink". Voor een Arduino is dit wat "Hello World" is voor andere programmeeromgevingen. Dit is het eenvoudigste programma waarmee je kunt laten zien dat de hele keten werkt - van het invoeren van het programma (op de hostcomputer: je PC/laptop/Raspberry Pi), het vertalen van het programma (op de host), het laden van de code van de host naar de Arduino, tot het uitvoeren van het programma op de Arduino. In het geval van "Blink" gaat er dan een LED knipperen - een LED op het Arduino bordje, of een LED die je op het breadboard gemonteerd hebt.

Opdracht 1a. Blink - met ingebouwde LED

  1. Open in de Arduino IDE het programma "Blink": Bestand->Voorbelden->01.Basic->Blink.
  2. Vertaal dit op de host (knop met "vinkje"),
  3. Laad het naar de Arduino (knop met ->, "upload").

Als alles goed is start het programma dan automatisch op het Arduino-bordje. Dit programma (of "sketch" in Arduino-termen) gebruikt een LED die op het bordje ingebouwd is. Deze is via een serieweerstand aangesloten op pin 13.

int led = 13;

void setup() {                
  pinMode(led, OUTPUT);   // initialize the digital pin as an output.
}

void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by (LOW level)
  delay(1000);               // wait for a second
}

Uitleg bij deze code:

  1. een Arduino-programma ("sketch") bestaat uit 3 vaste onderdelen:
    1. declaraties en definities van constanten, variabele, functies
  2. declaratie van de functie setup: deze functie wordt bij een reset van de Arduino één keer uitgevoerd, vóór de uitvoering van de loop.
    1. deze functie gebruik je voor allerlei initialisaties; in dit voorbeeld, om pin 13 te initialiseren als uitvoer-pin. Een Arduino-pin kun je meestal op meerdere manieren gebruiken (de pin is "programmeerbaar"); je moet dan van tevoren aangeven hoe je die pin gebruikt.
  3. declaratie van de functie loop: deze functie wordt herhaaldelijk aangeroepen (tot de volgende reset).
  4. de functie-aanroep digitalWrite(led, HIGH); heeft als resultaat dat er een spanning van 5V verschijnt op pin 13.
    1. de hardware-schakeling is zo dat hiermee de LED gaat branden
  5. de functie-aanroep digitalWrite(led, LOW); heeft als resultaat dat er een spanning van 0V verschijnt op pin 13.
    1. hierdoor gaat de LED uit.

Opmerking: een functie-declaratie begint met het type van het resultaat van de functie. Als de functie geen resultaat heeft, zoals in het voorbeeld van de setup en loop, dan is het resultaat void, ofwel "leeg".

Opmerking: we kunnen ook een hardware-schakeling maken zodat de LED brandt als er 0V op een pin staat, en deze uit is bij 5V.

Dit Arduino-programma werkt ook los van de "host"computer. Je sluit de Arduino dan aan op een aparte voeding (USB of batterij). Zodra de Arduino spanning krijgt, start het programma.

Variaties

  1. verander in de sketch de periode waarin de LED aan en uit is - bijvoorbeeld naar 500 msec, of naar 2000 msec.

Opdracht 1b. Blink - met LED op breadboard

LED aan Arduino pin 13

De volgende opdrachten zijn bedoeld om te leren werken met het breadboard. Hierop kun je je eigen schakelingen opbouwen, om te besturen vanuit de Arduino.

  1. lees Arduino/Breadboard om te begrijpen hoe de verbindingen op het breadboard lopen, en hoe je de voeding aansluit.
  2. zorg ervoor dat je Arduino geen spanning krijgt als je een schakeling opbouwt of verandert.
  3. bouw de eenvoudige schakeling met een LED en een serieweerstand. Gebruik een serieweerstand van 220 Ohm (rood-rood-bruin (goud)).
    1. denk erom dat je de LED in de juiste richting aansluit: langste pootje en/of ronde kant: Anode, aansluiten op Arduino pin 13; de andere pin sluit je aan op de weerstand.
    2. de weerstand plaats je tussen de Kathode van de LED (kortste pootje, vlakke kant behuizing) en de GND (0V, "aarde") op het breadboard. Een weerstand is een symmetrische component: het maakt niet uit in welke richting je deze aansluit.
  4. Sluit de Arduino aan op de spanning (bijv. via USB), en voer de "Blink" sketch uit.


In de bijgaande figuur zie je hoe je deze onderdelen op het breadboard kunt plaatsen en verbinden. Je krijgt een grotere versie van deze figuur door erop te klikken.

Opdracht 1c. Blink met 2 LEDs

Als volgende stap:

  1. verwijder de spanning van de Arduino (USB kabel los);
  2. voeg op het breadboard nog een LED toe met een serieweerstand; sluit deze aan op een andere pin, bijvoorbeeld pin 12.
  3. pas je eigen versie van "Blink" zo aan dat deze LED uit is terwijl de andere aan is, en omgekeerd.
  4. sluit de Arduino weer aan, en vertaal en laad deze aangepaste versie naar de Arduino.


Extra opdrachten

  1. (*) bij welke periode aan en uit zie je de LED net niet meer knipperen? Waardoor komt het dat je een knipperende LED niet meer ziet knipperen?
    1. Hint: met welke frequentie wordt een televisiebeeld ververst? Wat is de snelheid van de beeldjes van een film?
    2. Zie ook: http://en.wikipedia.org/wiki/Persistence_of_vision
    3. je kunt laten zien dat de LED echt knippert door het bordje zelf (snel) heen en weer te bewegen. Wat zie je dan?
    4. Zie bijvoorbeeld: http://www.youtube.com/watch?v=2hASOre63Nk,