Gratis verzending vanaf €74,95 NL (€99,95 BE/DE)

Voor 16:00 besteld = morgen in huis

Express voor 13:00 besteld = vanavond in huis*

14 dagen gratis terugsturen*


Land

Stap 1: Benodigdheden:

Stap 2: Het project

 In dit project maken we gebruik van de GPIO pinnen van de Raspberry Pi. De pinout van deze GPIO pinnen kan je vinden door in de terminal ‘pinout’ in te typen. Vanuit deze GPIO pinnen laten we een paar jumper wires komen, die we op een breadboard aansluiten. Op het breadboard zetten we twee drukknoppen en twee ledjes neer.

Daarnaast zetten we bij elke LED een weerstand, die ervoor zorgt dat er niet teveel stroom door de LED gaat lopen. Het doel van het project is dat je met de drukknoppen de leds kan aansturen. Dit houd in dat als je op de rechter drukknop drukt, het rechter ledje aan gaat. En als je op de linker drukknop drukt, het linker ledje aangaat. Als je op beide drukknoppen tegelijk drukt, zorgen we ervoor dat beide ledjes gaan knipperen.

Stap 3: Bouwen & bedraden

De Raspberry Pi heeft aan aantal GPIO pinnen. Met behulp van jumper wires sluiten we deze pinnen aan op een breadboard. Op het breadboard zetten we twee drukknoppen, twee ledjes en twee weerstanden neer (zie afbeelding). Vervolgens sluiten we de kathode (= de min à het korte pootje van de LED) van beide leds aan op de gnd (ground = 0V).

Ook sluiten we één kant van beide drukknoppen aan op de gnd. In de afbeelding hieronder hebben we bij de gnd gekozen voor zwarte jumperwires. Nu gaan we de andere kant van de componenten aanluiten.

We sluiten de anode (= de plus à het lange pootje van de LED) van de leds aan op een weerstand. De andere kant van de weerstand sluiten we aan op een GPIO pin. We hebben bij dit voorbeeld gekozen om LED 1 aan te sluiten op GPIO pin 8, en LED 2 op GPIO pin 7. Zie hiervoor de afbeelding hieronder.

De drukknoppen sluiten we, in tegenstelling tot de leds, direct aan op de GPIO pinnen. Hier hoef je dan ook geen extra weerstand tussen de drukknop en de Raspberry Pi te plaatsen. In het voorbeeld sluiten we drukknop 1 aan op GPIO pin 14, en drukknop 2 aan op GPIO pin 21. Zie hiervoor de afbeelding hieronder. 

Afbeelding 1

Wanneer je alles goed hebt aangesloten, zoals in het voorbeeld, kun je verder gaan naar de code.

Stap 4: programmeren

Nu is het tijd om een code te maken waarmee we GPIO pinnen aansturen. We maken deze code in de Thonny Python IDE. Met de RPi.GPIO Python-bibliotheek kun je eenvoudig de GPIO pinnen uitlezen en aansturen. Deze bibliotheek is al standaard geïnstalleerd in Raspberry Pi OS.

Wanneer je Thonny Python IDE hebt opgestart kan je de code typen. Boven in de code importeren we de bibliotheek RPi.GPIO (de we GPIO noemen) en bibliotheek time.

import RPi.GPIO as GPIO
import time

De GPIO pinnen kan je op verschillende manieren nummeren. In de RPi.GPIO bibliotheek kun je pincodes (BOARD) of Broadcom GPIO-nummers (BCM) kiezen. Je kan ze niet allebei tegelijk gebruiken, dus we moeten een keuze maken. In ons geval kiezen we voor de BCM nummering.

GPIO.setmode(GPIO.BCM)

Nu moeten we zorgen dat het de GPIO waarschuwingen uitgezet worden. Dit doen we met de volgende regel:

GPIO.setwarnings (False)

Nu is het tijd om aan te geven op welke GPIO pin elk component aangesloten is. Dit doen we door de drukknoppen en de ledjes een naam te geven, en vervolgens aan te geven op welke GPIO pin het aangesloten zit.

button1 = 14
button2 = 21
led1 = 8
led2 = 7

Als je de componenten op een andere GPIO pin hebt aangesloten, kan je dit gemakkelijk hier veranderen door een ander getal te typen.

Nu gaan aan de code doorgeven wat de functies van GPIO pinnen zijn. We geven aan de code door dat button1 en button2 (pin 14 en pin 21) beide een input (ingang) zijn. Daarachter geven we aan dat het om drukknoppen gaat. Bij de GPIO pinnen van de ledjes geven we alleen aan dat het een output (uitgang) is.

GPIO.setup(button1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(button2, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(led1, GPIO.OUT)
GPIO.setup(led2, GPIO.OUT)

Nu gaan we een oneindige loop (lus) maken. Dit doen we door de while loop, True (waar) te maken. Daarna zetten we in de code dat er steeds gekeken wordt of er een drukknop ingedrukt is. Wanneer dit het geval is, wordt de buttonState (drukknop status) van de desbetreffende knop True.

while True:
    buttonState1 = GPIO.input(button1)
    buttonState2 = GPIO.input(button2)

Nu gaan we naar het aansturingsgedeelte van de leds toe. Er wordt steeds gekeken welke drukknop is ingedrukt. Als er geen drukknoppen ingedrukt zijn, zijn beide ledje uit. Als drukknop 1 in gedrukt is, is LED 1 aan. Als drukknop 2 is ingedrukt, is LED 2 aan. Als beide drukknoppen zijn ingedrukt, gaan beide leds knipperen. Dit gebeurt door de leds 0,1 seconde aan te zetten, waarna de leds weer 0,1 seconde uitgaan. Dit gebeurt net zolang tot de drukknoppen niet meer ingedrukt zijn.

    if buttonState1 == True and buttonState2 == True:
        GPIO.output(led1,0)
        GPIO.output(led2,0)
    if buttonState1 == False and buttonState2 == True:
        GPIO.output(led1,1)
        GPIO.output(led2,0)
    if buttonState1 == True and buttonState2 == False:
        GPIO.output(led1,0)
        GPIO.output(led2,1)
    if buttonState1 == False and buttonState2 == False:
        GPIO.output(led1,1)
        GPIO.output(led2,1)
        time.sleep(0.1)
        GPIO.output(led1,0)
        GPIO.output(led2,0)
        time.sleep(0.1)

Hieronder vind je de gehele code in één stuk. Je kunt de code overtypen of kopiëren. We raden je aan om de code over te typen, omdat je daar meer van leert. Daarnaast kun je zelf aanpassingen of toevoegingen op de code bedenken.

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

GPIO.setwarnings (False)

button1 = 14
button2 = 21
led1 = 8
led2 = 7

GPIO.setup(button1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(button2, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(led1, GPIO.OUT)
GPIO.setup(led2, GPIO.OUT)

while True:
    buttonState1 = GPIO.input(button1)
    buttonState2 = GPIO.input(button2)
    if buttonState1 == True and buttonState2 == True:
        GPIO.output(led1,0)
        GPIO.output(led2,0)
    if buttonState1 == False and buttonState2 == True:
        GPIO.output(led1,1)
        GPIO.output(led2,0)
    if buttonState1 == True and buttonState2 == False:
        GPIO.output(led1,0)
        GPIO.output(led2,1)
    if buttonState1 == False and buttonState2 == False:
        GPIO.output(led1,1)
        GPIO.output(led2,1)
        time.sleep(0.1)
        GPIO.output(led1,0)
        GPIO.output(led2,0)
        time.sleep(0.1)

Als je dit project succesvol afgerond hebt, weet je hoe en waarvoor je de GPIO pinnen van de Raspberry Pi kunt gebruiken.

De waardering van www.elektronicavoorjou.nl bij WebwinkelKeur Reviews is 9.3/10 gebaseerd op 5034 reviews.