C++ / Raspberry Adventure (Stream vom 29.04.2024)

Опубликовано: 16 Июль 2026
на канале: adecc Scholar
168
3

Das war ein besonderer Stream. Da wir mit der Programmierung der Pins im Raspberry Pi beginnen wollen, haben wir im ersten Teil erst einmal die aktuelle gpoid library übersetzt und installiert, und hier natürlich auch das C++Binding, bevor im 2. Teil Michael übernommen hat, und uns in die Grundlagen der Geräteprogrammierung einzuführen. Die Bibliothek haben wir wieder als Quelltext geladen, und dann auf dem Raspberry übersetzt. Zwischendurch mussten wir noch einige Grundlafen ergänzen, die auf diesem Gerät gefehlt haben. Außerdem haben wir noch die SOIL2 Library bereitgestellt, die für OpenGL- Programme genutzt wird, um Texturen zu laden.

Zum Abschluß gibt Michael eine Einführung in die Geräteprogrammierung mit mit dem Raspberry Pi. Hier noch mal eine Übersicht der besprochenen Befehle:

Noch mal eine kurze Übersicht, über die Befehle, die Michael heute so verwendet hat. Mit dem ursprünglich mit Linux eingeführten GPIO Implementierungen kann man mit der Bash- Shell Steuerungen vornehmen, ohne dass wesentliche Programmierkenntnisse notwendig sind. Damit ist es für das Verstehen viel einfacher. Obwohl es eigentlich seit 8 Jahren deprecated ist, bleibt es die am weitesten verbreitete Variante.

Anschauen kann man sich die Belegungen, in dem man die Datei gpio im Verzeichnis /sys/kernel/debug/ ausgibt, der Bash- Befehl zur Ausgabe einer Datei is cat

cat /sys/kernel/debug/gpio

Interessant sind für den Raspberry PI5 die Bereiche ab GPIO 573 (Entspricht dem PIN 2 auf den Hat (der 40 poligen Pin- Leiste auf dem Raspberry))

Dort sieht man auch, ob Pins bereits von Anwendungen oder dem sysfs (der Steuerung via Filesystem/Posix) verwendet werden. Mit dem Schreiben in die virtuelle Datei export im Verzeichnis /sys/class/gpio können wir die Pins für diese nutzung anfordern, reservieren. Dazu wechseln wir vorher am besten in das Verzeichnis und schreiben die Port Nummer, die wir anfordern wollen noch export

~: cd /sys/class/gpio

Anzeigen der Dateien und Verzeichnisse
~: ls

(Achtung: Da bracket Zeichen in Beschreibungen von Youtube explizit nicht erlaubt sind, habe ich das "Größer als" Zeichen > durch das → Zeichen mehrfach ersetzt)

Schreiben nach export, echo gibt hier die Eingabe wieder, und mit dem → leiten wir die Ausgabe in die angebene Datei, fordern wir den Port/Pin an

~: echo 573 → export

Nun haben wir diesen Port angefordert und können das mit einem Blick ins Verzeichnis (ls) auch schnell prüfen, dort erscheint das Verzeichnis gpio573 über das wir den Pin steuern. Deshalb wechseln wir in dieses

~: cd gpio573

In diesem Verzeichnis finden wir einige Dateien. Mit dem Schreiben von "in" oder "out" in die Datei direction steuern wir, ob der Pin für die Eingabe oder Ausgabe verwendet wird, wir wollen out

~: echo out → direction

Nun sind wir fast fertig, wir schreiben eine 1 nach value, und der Pin ist aktiv (an) oder die 0, und das Licht geht aus (am Beispiel der LED)

~: echo 1 → value
~: echo 0 → value