Button-1

Leerdoelen

Gebruik van een button om de toestand van de LED te veranderen.

Functies en libraries

Elektrische componenten

  • Drukknop (button)
  • Weerstand 10kOhm (bruin zwart oranje goud)
  • LED
  • Weerstand 220 Ohm (rood-rood-bruin-goud)

Voorkennis

  • LED-0
  • Button-0

Inleiding

Met een drukknop kun je de toestand van de LED veranderen. Als je de drukknop even indrukt, verandert de LED van “uit” naar “aan”, of omgekeerd.

De schakeling en het schema zijn hetzelfde als in Button-0.

Schets

Opbouwen van de schakeling

De schakeling bestaat uit twee deelschakelingen.

(i) een LED-schakeling: een LED met een serieweerstand naar 0V. De LED is aangesloten op D13. (Zie LED-0)

(i) een button-schakeling.

De button plaats je over de lege middenrij. De button verbindt daarmee de kolommen onder en boven de button. (Dat zie je aan de groen gekleurde gaatjes in de figuur.)

De linkerkant van de button verbind je via een weerstand van 10kOhm (bruin-zwart-oranje-goud) met 0V, en via een draad aan D2.

De rechterkant van de button verbind je met de 5V-rij.

De Arduino verbind je met de 0V en 5V rijen van het breadboard.

button1_bb.png

Uitleg van het schema

Als de button S1 niet ingedrukt is, is D2 alleen (via R2) verbonden met 0V. De spanning op D2 is 0V. In de software wordt dit gelezen als LOW.

Als de button S1 ingedrukt is, is D2 rechtstreeks verbonden met 5V. Dit wordt in de software gelezen als HIGH.

Omdat R2 de ingang D2 naar 0V “trekt” als de schakelaar open staat, noemen we dit een “pull down” weerstand.

Als de button ingedrukt is, gaat er een stroom door R2. Om deze stroom te beperken, kiezen we een vrij grote waarde voor R2 (10 kOhm).

button1-schema.png

Uitleg programma

In setup wordt de led-pin als OUTPUT gezet, en de button-pin als INPUT.

In de loop wordt steeds de waarde van de button-input gelezen (met digitalRead), en gekopieerd naar de led-output (met digitalWrite).

int led = 13;
int button = 2;
int ledState = 0; // led off


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

  digitalWrite(led, ledState);
}

void loop() {
 if (digitalRead(button) == 1) {

    ledState = 1 - ledState;      // invert

    digitalWrite(led, ledState);
   delay(200);
 }
}

Vragen en opdrachten

  1.  Wat gebeurt er als je de knop ingedrukt houdt? Geef hiervoor een verklaring.
  2. Wat gebeurt er als je de “delay(200)” verkleint tot “delay(10)”? Verklaar dit.

Antwoorden: