De LED

Doet de led nu wel of niet? Is de led goed aangesloten? Moet ik de PIN of GPIO poort gebruiken? Hoeveel spanning mag een led hebben? Allemaal vragen die je als ontwikkelaar of hobbyist wel herkent. Wat doe je als je een van deze vragen hebt? Simpel, je zoekt de specificaties van de led op en schrijft een Python script om te testen of de aansturing (BCM/BOARD) goed is en of de led goed aangesloten is. De led kan immers omgedraaid zitten. En uiteraard.... een led kan ook stuk.

Op verzoek ga ik in deze korte tutorial in op de specificaties van de LED (Light Emitting Diode), het aansluiten en de aansturing ervan.

Polariteit
Het zit ‘m in de naam, de led is een diode die polariteit bezit en licht uitzendt. De polariteit van de led kan op twee manieren herkend worden.

1 – Van bovenaf, dan zie je de rechte rand die de kathode (-) aangeeft .
2 – Af fabriek zijn de lengtes van de aansluitdraden verschillend. De korte draad is de kathode (-).
De led is een ordinaire diode die bij doorvoer oplicht

Led aansluiten op de Raspberry Pi
Een rode led kan rechtstreeks op de GPIO aangesloten worden. Hiervoor gebruik ik een breadboard om de serieweerstand met de led te verbinden. Vanaf het breadboard maak ik met Dupont draden een verbinding met de poorten van de Pi. De zwarte draad wordt op de GND aangesloten en de blauwe op pin 13 (GPIO27).

Led met serieweerstand (220Ω) aangesloten op pin 11 (GPIO17) en de GND

De led moet in serie staan met een weerstand, anders hebben de led en de I/O-poort maar een kort leven. De GPIO heeft immers een spanningsniveau van 3.3V, terwijl een rode led maar 1,8-2.1V mag hebben. De waarden van de serieweerstanden worden doorgaans berekend bij 15-20mA. Het is goed te weten dat iedere kleur led zijn eigen spanningswaarde heeft. In het voorbeeld hierboven komt de stroom bij een weerstand van 220Ω op 15mA uit, hetgeen betekent dat de led niet voluit oplicht. Wil je dat de rode led sterk oplicht (20mA), neem dan een weerstand van ongeveer 180Ω.

Wil je meer weten over 5mm leds, hun spanning en stroom i.r.t. hun lichtsterkte? Kijk dan hier.

Iedere led kleur heeft een specifieke spanningswaarde. De weerstandswaarden zijn naar boven afgerond.

Gelukkig bestaan er zgn. ledcalculatoren op het internet waarbij je de gegevens van de led kunt instellen en waarbij het programma de serieweerstand berekent.

BCM of BOARD
Als je een led wilt aansturen via de Raspberry Pi, dan verbind je de led (met de serieweerstand) met een van de in-/uitgangspinnen. Hieronder zie je de bekende afbeelding die we iedere keer nodig hebben als we iets op de Raspberry Pi willen aansluiten.

Er zijn 17 GPIO (General Purpose Input/Output) pinnen waar de anode (+) van de led (via een serieweerstand) op aangesloten kan worden. De kathode (-) wordt op een van de 8 GND (GrouND) pinnen aangesloten. Alle GND pinnen zijn met elkaar verbonden, het maakt dus niet uit welke je gebruikt.

Wil je een led bijvoorbeeld op pin 11 aansluiten, dan is dit GPIO17. Het onderscheid is deze: pin 11 is de 11-de pin van de fysieke aansluitpinnen op het bord (BOARD). GPIO17 is de IN-/UITgang van de Broadcom (BCM) processor die met de fysieke pin 11 verbonden is.

De pinnen / GPIO van de Raspberry Pi

De aansturing in Python
Om een led met Python te kunnen besturen moeten we ervoor zorgen dat we de GPIO-pinnen beschikbaar maken. Dit doen we door de GPIO-module te laden.

import RPi.GPIO as GPIO

Vervolgens moeten we aangeven of we gebruik maken van de BOARD of BCM nummering. In dit geval gebruik ik de fysieke pin nummering van het bord, dus BOARD.

GPIO.setmode (GPIO.BOARD)

Gaat je voorkeur uit naar de fysieke header pinnummers, dan gebruik je BCM.

GPIO.setmode (GPIO.BCM)

Vervolgens moeten we opgeven of de poort/pin als ingang (IN) of uitgang (OUT) gebruikt wordt. Om een led aan te sturen hebben we een uitgang nodig. Als we een waarde, zoals een schakelaar (AAN/UIT), willen inlezen, hebben we een ingang nodig.

GPIO.setup (11,GPIO.OUT)

Wil je van pin11 een ingang maken, dan wordt de notatie:

GPIO.setup (11,GPIO.IN)

Tot slot wil je de led inschakelen.

GPIO.output(11,True)

De led uitschakelen doe je met:

GPIO.output(11,False)

Om een kleine pauze (0,2 sec) tussen het in- en uitschakelen te hebben, heb ik het onderdeel ‘sleep‘ van de module ‘time‘ geladen. Het Python script (knipper.py) wordt dan als volgt.

import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode (GPIO.BOARD)

GPIO.setup (11,GPIO.OUT)

p=0.2

while True:
    GPIO.output(11,True)
    sleep(p)
    GPIO.output(11,False)
    sleep(p)

Als het script opgeslagen is en gestart wordt zal de aangesloten led knipperen.

Geknipper!
Voor de liefhebber heb ik het script uitgebreid met twee leds (pin 13 en 15).

Have A Nice Day!