GPIO Schnittstelle: Mit WiringPi in 15 Minuten auf die GPIO Ports des Raspberry Pi zugreifen – Teil 3

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.

GPIO Schnittstelle: Mit WiringPi in 15 Minuten auf die GPIO Ports des Raspberry Pi zugreifen – Teil 3

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

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.

# 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:

gpio readall

und schon haben wir alle Date in einer übersichtlichen Tabelle angezeigt, aus der wir auch die Pin Belegungen usw. entnehmen können:

GPIO Schnittstelle: Mit WiringPi in 15 Minuten auf die GPIO Ports des Raspberry Pi zugreifen – Teil 3

Jetzt compilieren wir noch die Beispiele, dazu gehen wir in das ~/wiringPi/examples Verzeichnis und starten mit:

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,

An 3,12 Volt
GPIO Schnittstelle: Mit WiringPi in 15 Minuten auf die GPIO Ports des Raspberry Pi zugreifen – Teil 3
und
Aus 0 Volt
GPIO Schnittstelle: Mit WiringPi in 15 Minuten auf die GPIO Ports des Raspberry Pi zugreifen – Teil 3

und auf der Konsole

[email protected]:~/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:

  • In 15 Minuten zum eigenen C++ Programm auf dem Raspberry Pi Zero W – Teil 1
  • In 15 Minuten zum eigenen C++ Programm zum ausgeben der Systemtemperatur des Raspberry Pi Zero W – Teil 2
  • GPIO Schnittstelle: Mit WiringPi in 15 Minuten auf die GPIO Ports des Raspberry Pi zugreifen – Teil 3

Ähnliche Artikel:

  1. Raspberry Pi: Per Bash mit GPIO Lib wiringpi, per Phyton mit RPi.GPIO und Java mit pi4j ansteuern der Pins auf Kali
  2. In 15 Minuten zum eigenen C++ Programm zum ausgeben der Systemtemperatur des Raspberry Pi Zero W – Teil 2
  3. In 15 Minuten zum eigenen C++ Programm auf dem Raspberry Pi Zero W – Teil 1

wallpaper-1019588
[Comic] King in Black [3]
wallpaper-1019588
Schickes Design-Smartphone Gigaset GS5 erscheint im November
wallpaper-1019588
Jens Lossau & Jens Schumacher – Der Luzifer-Plan
wallpaper-1019588
Vietnam Streetfood: Meeresfrüchte, Muschel und mehr