c’t 12/2025
Het einde van Windows 10 - of niet?
Cover van
Cover voor GPIO-pinnen Raspberry Pi – toestand pin uitlezen in Python

GPIO-pinnen Raspberry Pi – toestand pin uitlezen in Python

Met de GPIO-pinnen van Raspberry Pi kun je de bijvoorbeeld knoppen en schakelaars aansluiten. Door de toestand van de gebruikte pinnen uit te lezen, houd je de knop of schakelaar in de gaten. Zo doe je dat in Python.

Lees verder na de advertentie

Je kunt op verschillende manier de toestand van pinnen in de gaten houden in Python. Lees hieronder wat je beter niet kunt doen en een manier die wel werkt.

GPIO-pinnen uitlezen met een lus

Misschien wil je pinnen controleren in een while-lus. Maar het opvragen van de toestand van een pin met een while-lus heeft een zeer ernstig neven­effect: het zorgt dat de SoC (System-on-Chip) van de Raspberry Pi heet wordt en het systeem volledig belast wordt – de Raspberry Pi is alleen maar bezig met het opvragen van de toestand van de pin.

Tip!

De laptop waar kracht, creativiteit en AI samenkomen!
De laptop waar kracht, creativiteit en AI samenkomen!

Ontworpen voor creators en professionals: configureer jouw eigen ASUS ProArt P16 nu.

Voor de hand liggend, maar uit den boze is het om time.sleep() te gebruiken om de lus te vertragen. Als je dit doet reageert de Pi alleen met een vertraging bij het indrukken van de knop.

De verstandige oplossing is dat de Pi zelf voor het monitoren zorgt en aan het programma laat weten wanneer de toestand van de pin verandert, zoals hieronder.


Ontvang gratis meer info over Raspberry Pi en Python, schrijf je in voor de nieuwsbrief:

Ontvang elke week het laatste IT-nieuws, de handigste tips en speciale aanbiedingen.

GPIO-pinnen Raspberry Pi via event uitlezen

Om de Raspberry Pi zelf de pin te laten monitoren, moet je:

  • voor de gewenste pin een event registreren;
  • een functie beschikbaar stellen die wordt aangeroepen zodra er iets gebeurt op de pin.

Het volgende Python-voorbeeld sluit de Raspberry Pi af wanneer je op de aan-uit-knop drukt die verbonden is met pin 5. De functie buttonPress wordt daarbij aangeroepen.

import RPi.GPIO as GPIO

import time

from subprocess import call

def buttonPress(pin):

if not GPIO.input(5):

print(“Shutdown”)

call([‘shutdown’, ‘-h’,

‘now’], shell=False)

GPIO.setmode(GPIO.BOARD)

GPIO.setup(5, GPIO.IN)

GPIO.add_event_detect(

5, GPIO.BOTH,

callback=buttonPress

)

while True:

time.sleep(5)

Aanroepen van de functie – gebruiken voor aan-uit knop Raspberry Pi

Het aanroepen van de functie GPIO.add_event_detect() registreert met de para­meter GPIO.BOTH de functie buttonPress() bij de event-handler in het geval dat Raspian op pin 5 een vallend ( GPIO.FALLING ) of een stijgend ( GPIO.RISING ) spanningsniveau detecteert.

Daarbij ontvangt buttonPress() het nummer van de pin waar de spanningsverandering op werd gedetecteerd.

Je kunt dit voorbeeld­programma opslaan onder de naam pishutdown.py en vervolgens aanroepen met sudo python3 pishutdown.py. Je kunt je Raspberry Pi dan afsluiten door op de knop te drukken en op dezelfde manier weer opstarten.

Hieronder zie je nog een overzicht van de GPIO-pinnen Raspberry Pi:


Meer doen met de GPIO-pinnen Raspberry Pi

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:

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)

De allernieuwste uitgave
Het einde van Windows 10 – of niet?
€ 9.50
  • Ontdek hoe je veilig blijft zonder nieuwe pc te kopen.
  • Big Tech onder de loep
  • Alles over Wi-Fi 8
Bestel nu
De allernieuwste uitgave

Tip!

Alles voor jouw werkplek
Alles voor jouw werkplek

Ben je opzoek naar nieuwe hardware, software of accessoires?
Je vindt het in onze computerwinkel!

Meer over

0

Praat mee

Abonneer
Laat het mij weten wanneer er
0 Reacties
oudste
nieuwste

Inspiratie in je mailbox

Blijf bij op IT-gebied en verbreed je expertise. Ontvang elke week artikelen over de laatste tech-ontwikkelingen, toepassingen, nieuwe hard- en software én ontvang tips en aanbiedingen.

Loginmenu afsluiten