Mit der wiringpi kann man leicht auf die GPIO Ports des Raspberry Pi zugreifen. Mit den Pins kann man dann leicht Hardware steuern. Auf dem Blog gibt es eine gute ausführliche Anleitung. Das will ich nicht wiederholen, sondern hier geht es darum wie man mit C++ auf die GPIO zugreifen kann. Obwohl man auch in 15 Minuten nach Installation der wiringpi Api die GPIO über Bash Scripte oder Python ansprechen kann.
Hier nun die nötigen Vorarbeiten um C++ mit wiringpi machen zu können. Es sind dort auch einige C Beispiele im Repo. Dazu aber später mehr.
Entweder man installiert das Package mit
1 |
sudo apt-get install wiringpi |
oder wie hier nun beschrieben über Git die neueste Version und compiliert es selber mit dem Ausführen des build Scriptes. Das ist hier beschrieben da wir das als API für die C++ Programmierung brauchen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# das Repo aus Git holen git clone git://git.drogon.net/wiringPi cd wiringPi # Ausführen des Build und install Script ./build # es dauert ca. eine Minuten # wiringPi Build script ===================== WiringPi Library [UnInstall] [Compile] wiringPi.c [Compile] wiringSerial.c [Compile] wiringShift.c [Compile] piHiPri.c [Compile] piThread.c [Compile] wiringPiSPI.c [Compile] wiringPiI2C.c [Compile] softPwm.c [Compile] softTone.c [Compile] mcp23008.c [Compile] mcp23016.c [Compile] mcp23017.c wiringPi.c:1248:21: warning: ‘digitalWrite8Dummy’ defined but not used [-Wunused-function] static void digitalWrite8Dummy (UNU struct wiringPiNodeStruct *node, UNU int pin, UNU int value) { return ; } ^~~~~~~~~~~~~~~~~~ wiringPi.c:1247:21: warning: ‘digitalRead8Dummy’ defined but not used [-Wunused-function] static unsigned int digitalRead8Dummy (UNU struct wiringPiNodeStruct *node, UNU int UNU pin) { return 0 ; } ^~~~~~~~~~~~~~~~~ [Compile] mcp23s08.c [Compile] mcp23s17.c [Compile] sr595.c [Compile] pcf8574.c [Compile] pcf8591.c [Compile] mcp3002.c [Compile] mcp3004.c [Compile] mcp4802.c [Compile] max31855.c [Compile] mcp3422.c [Compile] max5322.c [Compile] ads1115.c [Compile] sn3218.c [Compile] bmp180.c [Compile] htu21d.c [Compile] ds18b20.c [Compile] rht03.c [Compile] drcSerial.c [Compile] drcNet.c [Compile] pseudoPins.c [Compile] wpiExtensions.c [Link (Dynamic)] [Install Headers] [Install Dynamic Lib] WiringPi Devices Library [UnInstall] [Compile] ds1302.c [Compile] piNes.c [Compile] maxdetect.c [Compile] gertboard.c [Compile] piFace.c [Compile] lcd128x64.c [Compile] lcd.c [Compile] scrollPhat.c [Compile] piGlow.c [Link (Dynamic)] [Install Headers] [Install Dynamic Lib] GPIO Utility [Compile] gpio.c [Compile] readall.c [Compile] pins.c [Link] [Install] All Done. NOTE: To compile programs with wiringPi, you need to add: -lwiringPi to your compile line(s) To use the Gertboard, MaxDetect, etc. code (the devLib), you need to also add: -lwiringPiDev to your compile line(s). # Nun Testen wir ob alles läuft mit gpio -v # Ausgabe alles OK: gpio version: 2.44 Copyright (c) 2012-2017 Gordon Henderson This is free software with ABSOLUTELY NO WARRANTY. For details type: gpio -warranty Raspberry Pi Details: Type: Pi Zero-W, Revision: 01, Memory: 512MB, Maker: Sony * Device tree is enabled. *--> Raspberry Pi Zero W Rev 1.1 * This Raspberry Pi supports user-level GPIO access. |
Nun ein erster echter Test, wir lesen alle Daten der GPIO Schnittstelle mit:
1 |
gpio readall |
und schon haben wir alle Date in einer übersichtlichen Tabelle angezeigt, aus der wir auch die Pin Belegungen usw. entnehmen können:
Jetzt compilieren wir noch die Beispiele, dazu gehen wir in das ~/wiringPi/examples Verzeichnis und starten mit:
1 |
make really-all |
Jetzt können wir aus dem Verzeichnis das Testprogramm blink
starten, oder mein tw-blink.sh
Script ausführen das alle 5 Sekunden an und aus schaltet:
Schon kann man über Pin 11 und 12 das Blinken messen,
und auf der Konsole
1 2 3 4 5 6 7 8 9 10 11 |
pi@pi-zero:~/wiringPi/examples $ ./tw-blink.sh Starte endloses Blinken zwischen Pin 11 und 12. Beenden mit CTRL-C Aus An Aus An Aus An Aus An Aus... |
In einem nächsten Teil dann zum C++ eigentlichen Zugriff.
Was bisher geschah im C++ Kurs: