libPiGPIO

Eine modulare C++ Softwarebibliothek für den Raspberry Pi zur Einbindung elektronischer Bauelemente  (Schalter, Sensoren, Servos etc.)  in Softwareprojekte

Konzeptionell ähnelt libPiGPIO den bekannten python-Bibliotheken RPi.GPIO bzw. gpiozero: Bauelemente werden in eine Objekthierarchie abgebildet, sodass eine Art ‚Baukasten‘ entsteht.
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 );
    // 'connect_state' ist die Kurzform von
    // sigState.connect( &T::change_state, &listener );

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 );