Je kunt de GPIO-pinnen input in Raspberry Pi projecten gebruiken als een digitale ingang (aan/uit). Zo gebruik je de pinnen bijvoorbeeld als input om de status van een knop of schakelaar uit te lezen.
Lees hoe je de GPIO-pinnen input gebruikt in je eigen projecten. Lees ook het voorbeeld van een drukknop en waarom dit bij specifieke pinnen anders werkt.
GPIO-pinnen input gebruiken
Alle GPIO-schakelpinnen kunnen ook als digitale ingangen worden gebruikt. Je kunt daarbij vaststellen of een pin op potentiaal high (3,3 volt) of potentiaal low (0 volt, massa) staat.
Voorbeeld GPIO-pin als input
Met de volgende regels initialiseer je pin 5 als ingang:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(5, GPIO.IN)
Vervolgens kun je de spanning opvragen:
while True:
if GPIO.input(5):
print(“Pin 5: High”)
else:
print(“Pin 5: Low”)
break
Speciale functie van pin 5
Als je een drukknop verbindt met pin 5 en pin 6 (massa), dan is pin 5 normaal high. Hij wordt low als je de knop ingedrukt houdt – en daarmee de lus eindigt.
Toegegeven, die regels zijn een inbreuk op de eerder gemaakte afspraak om een pin van een bussysteem niet te verspillen aan eenvoudige schakeltaken.
Pin 5 hoort bij de tweede I2C-bus van de Pi. Maar hij heeft nog een speciale functie, een knop die daarop is aangesloten start de Pi opnieuw op als hij eerder uitgeschakeld is.
Om ervoor te zorgen dat dit ook werkt als de Raspberry Pi uitgeschakeld is, werd in de fabriek een zogenaamde pull-up-weerstand aangesloten op pin 5 en verbonden met VCC.
Die pull-up-weerstand zorgt ervoor dat pin 5 normaal een high-potentiaal heeft. Alleen wanneer je de pin met een knop kortsluit naar massa, detecteert de Pi low – die ingang werkt met de active-low-logica.
Een pull-up-weerstand van 1,8 kOhm op pinnen 3 en 5 voorkomt dat er te veel stroom loopt tijdens het kortsluiten en dat de Pi beschadigd raakt.
Dus als je één knop wilt hebben om je Pi mee op te starten en af te sluiten, dan is pin 5 de juiste, ondanks zijn speciale functie. Voor het afsluiten hoef je Python in plaats van break alleen het Linux-commando shutdown -h now te laten uitvoeren.
Andere GPIO-pinnen als input
Bij andere pinnen zijn er geen hard-wired weerstanden, maar schakelbare. Daar kun je bij het initialiseren van de pin aangeven of er een weerstand nodig is en of die moet worden geschakeld als pull-up-weerstand naar VCC of als pull-down-weerstand naar massa.
De volgende regel activeert pin 16 als ingang en schakelt een pull-up-weerstand naar VCC, net zoals die voor pin 5 gebruikt wordt:
GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP)
In onderstaand schema zie je een overzicht van de GPIO-pinnen.
Meer doen met de Raspberry Pi GPIO-pinnen
De Raspberry Pi dankt zijn succes in de hobbywereld aan zijn GPIO-aansluitingen. Met de juiste Python-bibliotheek en onze instructies lukken zelfs complexe taken.
In de inleiding Raspberry Pi GPIO pinnen: een overzicht van de aansluitingen wordt de lay-out van de GPIO-pinnen beschreven.
In deze serie komen de volgende onderwerpen aan bod:
- Led schakelen met GPIO-pinnen
- Bouncetime
- Toestand van een pin uitlezen
- Asynchrone functies
- GPIO-pinnen (potentiaal) als input gebruiken (deze pagina)
- Project met voetschakelaar
Meer projecten voor de Raspberry Pi vind je bij Raspberry Pi projects
(Deze informatie is afkomstig uit het artikel in c’t 4/2022, pagina 134, van Mirko Dölle en Marco den Teuling)