c’t 12/2025
Het einde van Windows 10 - of niet?
Cover van
Cover voor GPIO-pinnen en Python – event-lus met asynchrone functies

GPIO-pinnen en Python – event-lus met asynchrone functies

Bij de Raspberry Pi GPIO-pinnen en Python kun je een event-lus gebruiken om de toestand van pinnen te controleren. Als je daar asynchrone functies bij gebruikt werkt het nog beter.

Lees verder na de advertentie

Het eerdere voorbeeld in het artikel over de toestand van de GPIO-pinnen uitlezen sjoemelt een beetje, omdat het een oneindige while-lus bevat met een sleep()-commando. Je kunt dat verbeteren door asynchrone functies te gebruiken bij event-lussen.



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.

Event-lussen met GPIO-pinnen in Python

De oneindige while-lus met sleep()-commando zoals we die in het eerdere voorbeeld gebruikten is niet optimaal. De belasting die dat oplevert is te verwaarlozen, maar een nette oplossing is om de while-lus te vervangen door de volgende constructie met asynchrone functies:

try:

loop = asyncio.get_event_loop()

loop.run_forever()

except:

loop.close()

Aan het begin van het programma, dat je in zijn geheel kunt downloaden bij de link onderaan de pagina, wordt hiervoor de bibliotheek voor asynchrone input/output geladen met import asyncio. Die bibliotheek is erg handig voor event-lussen in je eigen Python-programma’s.


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

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

De bibliotheek voor asynchronone functies gebruiken

De bibliotheek voor asynchrone functies is de sleutel tot event-driven programmeren. Daarbij kunnen functies asynchroon parallel worden uitgevoerd op bijvoorbeeld processors met meerdere kernen, zoals in de Raspberry Pi 4.

Gewoonlijk bevatten dergelijke programma’s slechts een paar regels voor initialisatie en een groot aantal functies die dienen als event-handlers.

Tijdens het initialiseren wordt de event-loop aangemaakt, bijvoorbeeld met de functie get_event_loop() en vervolgens worden, zo nodig, event-handlers geregistreerd.

Daarna zorgt de functie run_forever() ervoor dat het programma blijft lopen, ook als er op dat moment geen commando’s zijn om uit te voeren.

Als er later taken bijkomen, worden die aan de lopende event-loop toegevoegd en verwerkt zodra ze aan de beurt komen.

Voorbeeldproject downloaden

In c’t 4/2022 vind je het complete Python-voorbeeldproject beschreven, waarbij we een voetschakelaar aansluiten op de GPIO-pinnen van de Raspberry Pi om het programma OBS-studio aan te sturen.

De complete Python-code, waarin een event-lus met asychrone functies wordt gebruikt, kun je downloaden en als voorbeeld gebruiken voor je eigen code.

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:

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!

De beste laptop aanbiedingen op een rij!
De beste laptop aanbiedingen op een rij!

Dit is het moment om jouw droomdevice aan te schaffen.

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