Arduino-opdrachten/Button-0

Uit basis
< Arduino-opdrachten
Versie door Eelco (overleg | bijdragen) op 25 mei 2016 om 10:09 (→‎Button-0)
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Naar navigatie springen Naar zoeken springen
Arduino opdrachten

Zie ook Regels en richtlijnen
Zie ook Artikelen bewerken

Button-0

Leerdoelen button (schakelaar), pulldown-weerstand, digitale input, variabele/toekenning
Voorkennis Blink-1
Onderdelen

LED, weerstand 220 ohm (rood-rood-bruin-goud), weerstand 10K ohm (bruin-zwart-oranje-goud), drukknopschakelaar

Libraries en functies digitalWrite

Inleiding

Kopieer button-waarde naar LED

Met behulp van een schakelaar zet je de LED aan en uit: de LED brandt als je de schakelaar ingedrukt hebt.

Opbouwen van de schakeling

Button aan Arduino pin 2
  1. Plaats een LED met serieweerstand (220 Ohm: rood-rood-bruin) op het breadboard (zie Blink-1);
  2. Verbind de LED met pin 13;
  3. Plaats een drukknopschakelaar (4 pootjes) op het breadboard, over de lege/isolerende middenstreep.
    1. Je kunt deze dan niet per ongeluk een kwartslag draaien.
    2. De schakelaar verbindt de kolommen onder en boven deze middenstreep die in elkaars verlengde liggen.
    3. Als de schakelaar ingedrukt wordt, verbindt deze linker- en de rechter kolommen van de schakelaar.
  4. Plaats een weerstand van 10KOhm (bruin-zwart-oranje) tussen de linkerkolom van de schakelaar en de 0V lijn.
    1. Deze weerstand noemen we de "pulldown weerstand", zie verderop.
  5. Verbind de linkerkolom van de schakelaar met pin 2 van de Arduino.
  6. Verbind de rechterkolom van de schakelaar met de 5V lijn (rode draad).
  7. Verbind de 0V lijn van het breadboard met een GND-pin van de Arduino (zwarte draad).
  8. Verbind de 5V lijn van het breadboard met de 5V pin van de Arduino (rode draad).

Schema

Button aan Arduino pin 2 (HIGH als actief)

Als de schakelaar gesloten is (ingedrukt, actief) dan is input-pin 2 direct verbonden met 5V. In de software geeft dit bij het lezen van de input-pin via digitalWrite(2) de waarde HIGH.

  • over de weerstand staat in dit geval een spanning van 5V.

Als de schakelaar open staat (niet ingedrukt, niet actief) dan is input-pin 2 via de weerstand van 10kOhm verbonden met 0V. Dit geeft een waarde van 0V op de input-pin. In de software geeft dit bij het lezen van de input-pin de waarde LOW.

  • door de weerstand gaat geen stroom: over de weerstand staat in dit geval een spanning van 0V.

Het niveau van de uitvoer van de schakelaar is HIGH als de schakelaar ingedrukt is ("actief"). Een dergelijk signaal noemen we active high. (In Button-2 zullen we een schakeling gebruiken die active-low is.)

Programma

int led = 13;
int button = 2;

int buttonState = LOW;

void setup() {
  pinMode(led, OUTPUT);
  pinMode(button, INPUT);
}

void loop() {
  buttonState = digitalRead(button);
  digitalWrite(led, buttonState);
}

Uitleg van het programma

De functie digitalRead(button) levert de waarde van de button op dat moment. Deze waarde is HIGH als de button ingedrukt is, en LOW als de button niet ingedrukt is.

Deze waarde wordt toegekend aan de variabele buttonState.

Deze variabele gebruik je vervolgens voor het zetten van de waarde van de LED-output.


Merk op dat je deze variabele niet strikt nodig hebt. Je kunt het ook in 1 regel opschrijven als:
digitalWrite(led, digitalRead(button));.
Op die manier is het nog duidelijker dat je een directe verbinding maakt tussen de input (button) en de output (LED).

Vragen en opdrachten

Eerste experimenten

  • voeg aan het eind van de loop de functieaanroep delay(200); toe.

Verdiepingsvragen