libPiGPIO

Eine modulare C++ Softwarebibliothek für den Pi4 zur Einbindung elektronischer Bauelemente  in Softwareprojekte

Konzeptionell ähnelt libPiGPIO den bekannten python-Bibliotheken RPi.GPIO bzw. gpiozero: Bauelemente werden in einer Objekthierarchie abgebildet, sodass sich eine Art ‚Baukasten‘ ergibt.
Zusätzlich können über einen einfachen signal-slot Mechanismus elektrische ‚Events‘ asynchron an  Objektmethoden (callbacks) gebunden werden.

  // ein 'Drückschalter' an Pin GPIO 16
  pigButton button( bcm16 );
    
  // eine LED und ein Summer an Pin 12 und Pin 23
  pigLED LED( bcm12 );
  pigBuzzer buzzer( bcm23 );
    
  // Zustände verknüpfen
  button.connect_state( LED );
  button.connect_state( buzzer );

Technisch handelt es sich um einen C++ – Wrapper der C-library ‚pigpio‘ für den RaspBerry Pi. Die Überwachung der Sensorik erfolgt multithreaded, sodass Abfrageschleifen vermieden werden können.

  // Ultraschall Modul HC-SR04
  pigSonar sonar( bcm21, bcm20 );
  // je näher, desto höher der Ton
  sonar.sigValue.connect( [&](double dist){  buzzer.buzz( 100, dist*50 ); } );
  // Schwellwert <= 20 cm
  sonar.start( 20 );

Es liegt nahe, die ‚elektrischen‘ c++ Objekte über den Callback-Mechnismus mit den GUI-Klassen der Qt-Bibliothek zu verbinden, z.B. ein QDial-Widget als ‚digitalen Zwilling‘ eines Rotary-Encoders.

  • Sprache: c++ / stl / Qt
  • Plattform: Raspberry Pi4
  • Quellcode: libpigpio
  • Status: experimentell