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

Gebruik het "Blink" programma uit zoals dat voorkomt in de Arduino IDE: Bestand->Voorbelden->01.Basic->Blink. Vertaal dit op de host (knop met "vinkje"), laad het naar de Arduino (knop met ->). 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.

  1. verander in de sketch de periode waarin de LED aan en uit is - bijvoorbeeld naar 500 msec, of naar 2000 msec.
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
}

Opmerkingen bij deze code:

  • de functie setup wordt bij een reset van de Arduino één keer uitgevoerd, voor de uitvoering van de loop.
    • 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; je moet dan van tevoren aangeven hoe je die pin gebruikt.
  • de loop-functie wordt herhaaldelijk aangeroepen (tot de volgende reset).

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.

Opdracht 1b. Blink - met LED(s) 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. 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. Sluit de LED aan op pin 13, en voer de "Blink" sketch uit.
  3. voeg nog een LED toe met een serieweerstand; sluit deze aan op een andere pin, bijvoorbeeld pin 12. Pas je eigen versie van "Blink" zo aan dat deze LED uit is terwijl de andere aan is, en omgekeerd.

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 2 - Blink - met LEDs op breadboard

We gebruiken bij deze opdrachten dezelfde opstelling als hierboven, eventueel uitgebreid met meerdere LEDs.

In een andere les hebben we de werking van timers behandeld. We hebben gezien hoe je een LED kunt laten knipperen zonder delay te gebruiken, waardoor we voorkomen dat het programma lange tijd "doof" is voor invoer. Deze techniek heb je nodig voor deze opdracht.

Opdracht 2a. Gebruik twee LEDs: laat de ene LED 2 maal per seconde knipperen, en de andere 3 maal per seconde.

Opdracht 2b. Gebruik twee LEDs en twee schakelaars: met de ene schakelaar verhoog je de knipperfrequentie van de ene LED, en met de andere verlaag je de knipperfrequentie van die LED. De andere LED laat je met een vaste frequentie van een halve Herz knipperen (1 seconde aan, 1 seconde uit).

Opdracht 2c. Gebruik dezelfde opstelling als hiervoor. Gebruik voor de ene LED een knipperfrequentie van 50Hz (10 msec aan, 10 msec uit). Met de ene schakelaar vergroot je de aan-periode, met de andere vergroot je de uit-periode - terwijl de som van die twee gelijk blijft. Met andere woorden: je verandert de frequentie niet. De andere LED laat je met een vaste frequentie van een halve Herz knipperen. Vergelijk het resultaat mer de Digitale dimmer. (Bestudeer hierbij ook: Analoge uitvoer - Pulse Width Modulation.)

Opdracht 3

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,