Arduino lessen/les 3

Uit Lab
< Arduino lessen
Versie door Eelco (overleg | bijdragen) op 8 okt 2013 om 19:59 (→‎Opdracht 1. Dimmer zonder invoer)
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
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

Les 3 Analoge uitvoer

Een Arduino heeft niet een echte analoge uitgang: er is geen Digitaal/Analoog-omzetter (D/A converter). Dit betekent dat het niet goed mogelijk is om een analoog signaal, zoals spraak of muziek, weer te geven. Maar als het gaat om een analoog niveau, bijvoorbeeld voor de lichtsterkte van een LED, of de snelheid van een motor, dan kunnen we de pulsbreedtemodulatie (pulse width modulation, PWM) van de Arduino gebruiken. De onderstaande opdrachten zijn bedoeld om hiermee te leren werken.

Opdracht 1. Dimmer zonder invoer

Bij deze opdracht gebruik je een LED op het breadboard, aangesloten op pin 9 van de Arduino. De pinnen van de Arduino waarvoor een PWM-uitvoer mogelijk is, worden op het bord aangegeven door "~". Dit zijn de pinnen 3, 5, 6, 9, 10, 11.

  1. Gebruik programma Voorbeelden-> 01.Basic-> Fade, met de LED aangesloten op pin 9, en probeer dit programma te begrijpen.
  2. Pas het programma aan zodat de LED in een ander tempo verandert.
  3. Pas het programma aan zodat de LED varieert tussen de halve en de hele lichtsterkte.

Een samenvatting van het programma Fade:

int led = 9;           // the PWM pin that the LED is attached to
int brightness = 0;    // brightness state for the LED
int fadeAmount = 5;    // change in brightness state per step 

void setup()  { 
  pinMode(led, OUTPUT);     // use pin 9 as output
} 

void loop()  { 
  analogWrite(led, brightness);      // set LED to brightness state    

  brightness = brightness + fadeAmount;   // change brightness

  if (brightness == 0 || brightness == 255) { // at end of fade cycle
    fadeAmount = -fadeAmount ;         // reverse the fade direction 
  }     
     
  delay(30);                             // wait for 30 milliseconds                          
}

Opmerking: het symbool || staat voor "or": de logische (inclusieve) of. Deze levert true als tenminste één van de twee operanden true is

Dit is anders dan de exclusieve of die we in het dagelijks leven vaak gebruiken, bijvoorbeeld: de prijs is voor Jan of Joke.

Opdracht 2. Dimmer met drukknoppen

Bij deze opdracht gebruik je de drukknoppen om een hoger of een lager lichtniveau te schakelen. Hiervoor gebruik je de techniek voor het schakelen met een drukknop: zie Arduino lessen/les 2 - opdracht 2.

  1. sluit een LED aan (op de normale manier, via een serieweerstand) op één van de pinnen die als analoge output gebruikt kan worden (bijvoorbeeld Pin 9).
  2. sluit twee schakelaars aan op pinnen die als digitale inputs gebruikt kunnen worden.
  3. maak een programma waarmee je met één van de schakelaars de LED feller laat branden, en met de andere de LED minder fel laat branden. Bijvoorbeeld: met de ene schakelaar verdubbel je het niveau van de LED, met de andere halveer je dat.

Voor voorbeelden en een uitleg van de verschillende begrippen, zie:

  • achtergrondmateriaal, Analoge uitvoer