Arduino-opdrachten/LED-2

Uit basis
Naar navigatie springen Naar zoeken springen
De printervriendelijke versie wordt niet langer ondersteund en kan weergavefouten bevatten. Werk uw browserbladwijzers bij en gebruik de gewone afdrukfunctie van de browser.
Arduino opdrachten

Zie ook Regels en richtlijnen
Zie ook Artikelen bewerken

LED-2

Leerdoelen variabele
Voorkennis Arduino-opdrachten/LED-1
Onderdelen

LEDs: rood en groen, weerstanden (2x) 220 ohm (rood-rood-bruin-goud)

Libraries en functies

Inleiding

Twee knipperende LEDs

Je laat twee LEDs om de beurt knipperen.

In de experimenten probeer je de LEDs op verschillende manieren te laten knipperen.

Opbouwen van de schakeling

Rode en groene LEDs
  • verbind de 0V van de Arduino met de 0V-lijn van het breadboard; verbind de ene 0V lijn van het breadboard met de andere 0V lijn(zwarte draden);
  • plaats een rode LED met de kathode (korte pootje) in de 0V lijn en de anode in de kolom eronder.
  • plaats een weerstand van 220 Ohm van de kolom met de LED-anode naar de kolom eronder (over de lege/isolerende middenlijn).
  • verbind de kolom waarin je de weerstand geplaatst hebt met pin 13 van de Arduino (gele draad).
  • plaats een groene LED met de kathode in de 0V lijn en de anode in de kolom eronder.
  • plaats een weerstand van 220 Ohm van deze kolom naar de kolom eronder.
  • verbind deze kolom met pin 12 van de Arduino (gele draad).

Op deze manier gebruikt de schakeling van een LED met serieweerstand maar één enkele kolom van het breadboard: dat is handig als je veel LEDs wilt plaatsen, of als het bord anders erg vol is.

Schema

Rode LED aan pin13, groene aan pin12

De beide LEDs zijn hier iets anders geschakeld dan in Blink-1: de LED en de weerstand staat andersom in serie. Dit maakt voor de werking geen verschil (als de LED maar in de goede richting staat: pijl in de richting van de spanning/stroom).

Programma

int ledGreen = 12;
int ledRed = 13;

void setup() {
  pinMode(ledGreen, OUTPUT);
  pinMode(ledRed, OUTPUT);
}

void loop() {
  digitalWrite(ledGreen, HIGH);
  digitalWrite(ledRed, LOW);
  delay(1000);
  digitalWrite(ledGreen, LOW);
  digitalWrite(ledRed, HIGH);
  delay(1000);
}

Uitleg van het programma

De vorm int ledGreen = 12; betekent dat we een variabele invoeren met de naam ledGreen. Dit is een variabele van het type int: deze neemt alleen waarden aan die gehele getallen (integers) zijn. Deze variabele kennen we de waarde 12 toe, via een toekenning (assignment: we spreken = uit als "wordt").

Het gebruik van namen voor de LED-pinnummers maakt het programma veel leesbaarder. Bovendien kunnen we de pinnen eenvoudiger veranderen: de getallen staan maar op één plaats.

Voor de leesbaarheid van het programma is het belangrijk dat je namen kiest met een duidelijke betekenis. (Dus niet: x en y of var1 en var2.)

Vragen en opdrachten

  1. Pas het programma zo aan dat er tussen het uitschakelen van de groene LED en het inschakelen van de rode LED een tijd zit van 0.1 seconde. Idem voor het inschakelen van de groene LED en het uitschakelen van de rode LED.
  2. Pas het programma zo aan dat de rode LED tweemaal zo snel knippert als de groene LED.
    1. Hint: teken eerst het tijdsdiagram voor de beide LEDs.

Gevorderde opdracht

  1. Laat de rode LED knipperen met een frequentie van 2 Hz (periode 500 msec), en de groene LED met een frequentie van 3 Hz (periode 333 msec).
  2. Kun je dit eenvoudig veranderen in een frequentie van 5 Hz en 7 Hz?

Hint: als de frequenties van de beide LEDs onderling niet deelbaar zijn, dan kun je het programma beter op een andere manier opzetten. Je kunt timers gebruiken: zie XXX.

Hoe verder?

  • je kunt nog een LED toevoegen; of een serie LEDs