Die Bibliothek wiringPi wird schon einige Zeit nicht mehr gepflegt. Sie liegt auch dem RaspberryPi OS längst nicht mehr standardmäßig bei.
Die heutzutage empfohlene Variante für erfahrenere Entwickler um die GPIO zu steuern sieht vor mittels SysFS die entsprechenden File Descriptors zu nutzen.
Das ist demnach nicht mehr als Dateien öffnen, lesen, schreiben und wieder schließen.
Ich hatte für Azubinen und Azubis eine kleine Aufgabe erstellt, die vorsah eine entsprechende Library zu programmieren und diese dann in einem kleinen Konsolenprogramm zu verwenden. Dabei sollten sie die Lösung in C entwickeln.
Meine Musterlösung habe ich in Rust übersetzt und diese möchte ich hier teilen.
Die Library
Wir fangen mit der Implementation der Bibliothek an, die wir später in einem Beispielprogramm verwenden möchten. Hierzu erstellen wir erst den Projektordner und danach das Projekt mit dem Rust Packet Manager Cargo.
~$ mkdir rgpio
~$ cd rgpio
~$ cargo new --lib rgpiolib
In der Datei ./src/lib.rs werden wir nun einige Funktionen schreiben, die zum Konfigurieren, dem Lesen und dem Schreiben der einzelnen Ports dienen sollen.
Die Konsolenanwendung
Danach können wir die Library in einer Anwendung einbinden. Als Beispiel soll ein CLI Anwendung dienen die alle GPIO, die mit den Startparametern übergeben wurden, nacheinander einschaltet, 500ms wartet und dann wieder ausschaltet.
Dafür wechseln wir in das Projekt - Hauptverzeichnis und führen wieder Cargo aus.
~$ cd ..
~$ cargo new rgpio
In der Datei ./cargo.toml fügen wir nun die vorab erstellte Bibliothek rgpiolib ein.
Danach können wir die Library in unserem Source nutzen. Was wir auch direkt in der Datei ./src/main.rs ausprobieren werden.