Bevor wir auf die GPIO Schnittstelle des Pi zugreifen, geben wir erst einmal die Temperatur aus.
Der Raspi speichert die Systemtemperatur in der Datei /sys/class/thermal/thermal_zone*/temp. Wenn wir also die Datei mit dem Systemkommando cat ausgeben, haben wir die Temperatur ausgelesen.
Z.b.:
cat /sys/class/thermal/thermal_zone*/temp # Ergebnis 35780
Dafür erstellen wir uns zu erst eine neue Klasse Temperatur mit der Methode int ausgeben(). So können wir auch sehen, wie mehrere Klassen zusammenspielen. Also eine Temperatur.h Datei mit der Definition
// Temperatur.h #ifndef __TEMPERATUR_INCLUDE__ #define __TEMPERATUR_INCLUDE__ class Temperatur{ public: int ausgeben(); }; #endif
und eine Temperatur.cpp Klasse mit der Implementierung:
#include <iostream> #include <fstream> #include <cstdlib> using namespace std; // (c) 2018 Thomas Wenzlaff class Temperatur { public: Temperatur(); ~Temperatur(); int ausgeben(); }; Temperatur::Temperatur(){ } Temperatur::~Temperatur(){ } int Temperatur::ausgeben(){ system("cat /sys/class/thermal/thermal_zone*/temp >temp.txt"); cout << ifstream("temp.txt").rdbuf(); return 0; }
Die ausgeben Methode ruft einfach ein System Kommando auf, schreibt das Ergebnis in eine eigene temp.txt Datei und gibt das Ergebniss auf der Konsole aus. Jetzt brauchen wir noch ein kurzes Testprogramm mit Namen programm-4.cpp, das die Temperatur Klasse instanziiert und die Methode ausführt:
#include <iostream> #include "Temperatur.h" using namespace std; // (c) 2018 Thomas Wenzlaff // programm-4.cpp #define PROGRAMM_VERSION 4 int main() { cout << "www.wenzlaff.de" << endl; cout << "Programm Version " << PROGRAMM_VERSION << endl; Temperatur temperatur; cout << "Raspberry Pi Temperatur " << temperatur.ausgeben() << " Grad Celsius"; return 0; }
Wie werden nun die beiden Programme compiliert?
g++ -Wall -ansi -o start-prg-4 Temperatur.cpp programm-4.cpp
Wir compilieren jetzt immer mit -Wall um möglichst viele Warnungen zu sehen und mit -ansi um den Standard auszugeben. Mit -o geben wir den Namen des outputfile an. Also in diesem Fall start-prg-4. Weitere Parameter können auf den man Pages nachgelesen werden.
Nun können wir das compilierte Programm ausführen mit ./start-prg-4 und das Ergebnis, ist die Temperatur.
www.wenzlaff.de Programm Version 4 Raspberry Pi Temperatur 35780
Die Temperatur muss noch durch 1000 geteilt werden. Wie geht das? Hausaufgabe! Ergebnis gern als Kommentar oder Pull Request.
Den ganzen Quellcode gibt es kostenlos auf GitHub zum download.
Jetzt will ich noch für diese Kommandozeile ein Makefile schreiben, das automatisch ausführt wir wenn man make eingibt.
# # Makefile für den CPP-Lehrgang # # Thomas Wenzlaff http://www.wenzlaff.de # # Der CPP Compiler CXX=g++ # Flags LDFLAGS=-Wall -ansi # Die Quellcode Dateien SRCS=programm-4.cpp Temperatur.cpp OBJS=$(subst .cc,.o,$(SRCS)) # Der Programmname der erzeugt wird all: start-prog start-prog: $(OBJS) $(CXX) $(LDFLAGS) -o start-prog $(OBJS) $(LDLIBS) start-prog.o: Temperatur.cpp Temperatur.h programm-4.cpp # für das Löschen mit make clean clean: $(RM) start-prog distclean: clean
Ein make clean löscht übrigens das erzeugt Programm wieder. So dann mal weiter zum nächsten Teil …
Ähnliche Artikel:
- 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
- In 15 Minuten zum eigenen C++ Programm auf dem Raspberry Pi Zero W – Teil 1