Text fortgesetzt
This commit is contained in:
parent
295dc501da
commit
db04e16f47
5 changed files with 134 additions and 9 deletions
127
code/display.py
Executable file
127
code/display.py
Executable file
|
@ -0,0 +1,127 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Originales Programm von http://www.schnatterente.net/technik/raspberry-pi-32-zeichen-hitachi-hd44780-display
|
||||||
|
# von mir modifiziert (Anzeige ausgelagert, ergänzt, um Text aus einer Datei anzuzeigen)
|
||||||
|
import time
|
||||||
|
import sys
|
||||||
|
import RPi.GPIO as GPIO
|
||||||
|
|
||||||
|
# Zuordnung der GPIO Pins (ggf. anpassen)
|
||||||
|
DISPLAY_RS = 7
|
||||||
|
DISPLAY_E = 8
|
||||||
|
DISPLAY_DATA4 = 25
|
||||||
|
DISPLAY_DATA5 = 24
|
||||||
|
DISPLAY_DATA6 = 23
|
||||||
|
DISPLAY_DATA7 = 18
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DISPLAY_WIDTH = 16 # Zeichen je Zeile
|
||||||
|
DISPLAY_LINE_1 = 0x80 # Adresse der ersten Display Zeile
|
||||||
|
DISPLAY_LINE_2 = 0xC0 # Adresse der zweiten Display Zeile
|
||||||
|
DISPLAY_CHR = True
|
||||||
|
DISPLAY_CMD = False
|
||||||
|
E_PULSE = 0.00005
|
||||||
|
E_DELAY = 0.00005
|
||||||
|
|
||||||
|
|
||||||
|
def anzeige(): # Anzeige auslagern, um es wiederholt anzuzeigen
|
||||||
|
lcd_byte(DISPLAY_LINE_1, DISPLAY_CMD)
|
||||||
|
lcd_string(oben)
|
||||||
|
lcd_byte(DISPLAY_LINE_2, DISPLAY_CMD)
|
||||||
|
lcd_string(unten)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
GPIO.setmode(GPIO.BCM)
|
||||||
|
GPIO.setup(DISPLAY_E, GPIO.OUT)
|
||||||
|
GPIO.setup(DISPLAY_RS, GPIO.OUT)
|
||||||
|
GPIO.setup(DISPLAY_DATA4, GPIO.OUT)
|
||||||
|
GPIO.setup(DISPLAY_DATA5, GPIO.OUT)
|
||||||
|
GPIO.setup(DISPLAY_DATA6, GPIO.OUT)
|
||||||
|
GPIO.setup(DISPLAY_DATA7, GPIO.OUT)
|
||||||
|
display_init()
|
||||||
|
|
||||||
|
# GPIO.cleanup()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def display_init():
|
||||||
|
lcd_byte(0x33, DISPLAY_CMD)
|
||||||
|
lcd_byte(0x32, DISPLAY_CMD)
|
||||||
|
lcd_byte(0x28, DISPLAY_CMD)
|
||||||
|
lcd_byte(0x0C, DISPLAY_CMD)
|
||||||
|
lcd_byte(0x06, DISPLAY_CMD)
|
||||||
|
lcd_byte(0x01, DISPLAY_CMD)
|
||||||
|
|
||||||
|
def lcd_string(message):
|
||||||
|
message = message.ljust(DISPLAY_WIDTH, " ")
|
||||||
|
for i in range(DISPLAY_WIDTH):
|
||||||
|
lcd_byte(ord(message[i]), DISPLAY_CHR)
|
||||||
|
|
||||||
|
def lcd_byte(bits, mode):
|
||||||
|
GPIO.output(DISPLAY_RS, mode)
|
||||||
|
GPIO.output(DISPLAY_DATA4, False)
|
||||||
|
GPIO.output(DISPLAY_DATA5, False)
|
||||||
|
GPIO.output(DISPLAY_DATA6, False)
|
||||||
|
GPIO.output(DISPLAY_DATA7, False)
|
||||||
|
if bits & 0x10 == 0x10:
|
||||||
|
GPIO.output(DISPLAY_DATA4, True)
|
||||||
|
if bits & 0x20 == 0x20:
|
||||||
|
GPIO.output(DISPLAY_DATA5, True)
|
||||||
|
if bits & 0x40 == 0x40:
|
||||||
|
GPIO.output(DISPLAY_DATA6, True)
|
||||||
|
if bits & 0x80 == 0x80:
|
||||||
|
GPIO.output(DISPLAY_DATA7, True)
|
||||||
|
time.sleep(E_DELAY)
|
||||||
|
GPIO.output(DISPLAY_E, True)
|
||||||
|
time.sleep(E_PULSE)
|
||||||
|
GPIO.output(DISPLAY_E, False)
|
||||||
|
time.sleep(E_DELAY)
|
||||||
|
GPIO.output(DISPLAY_DATA4, False)
|
||||||
|
GPIO.output(DISPLAY_DATA5, False)
|
||||||
|
GPIO.output(DISPLAY_DATA6, False)
|
||||||
|
GPIO.output(DISPLAY_DATA7, False)
|
||||||
|
if bits & 0x01 == 0x01:
|
||||||
|
GPIO.output(DISPLAY_DATA4, True)
|
||||||
|
if bits & 0x02 == 0x02:
|
||||||
|
GPIO.output(DISPLAY_DATA5, True)
|
||||||
|
if bits & 0x04 == 0x04:
|
||||||
|
GPIO.output(DISPLAY_DATA6, True)
|
||||||
|
if bits & 0x08 == 0x08:
|
||||||
|
GPIO.output(DISPLAY_DATA7, True)
|
||||||
|
time.sleep(E_DELAY)
|
||||||
|
GPIO.output(DISPLAY_E, True)
|
||||||
|
time.sleep(E_PULSE)
|
||||||
|
GPIO.output(DISPLAY_E, False)
|
||||||
|
time.sleep(E_DELAY)
|
||||||
|
|
||||||
|
# Beginn der Ergaenzung
|
||||||
|
beschreibungen = ["Uhrzeit:", "Innentemperatur", "Ger\xe1tetemp 1", "Bodentemperatur", "Ger\xe1tetemp 2", "Temperatur/Luft", "Luftfeuchte", "Au\xe2entemperatur", "Luftdruck", "Prozessor", "Luftqualit\xe1t"]
|
||||||
|
einheiten = ["", "\xdfC", "\xdfC", "\xdfC", "\xdfC", "\xdfC", "% rF", "\xdfC", "(hPa)", "\xdfC", ""]
|
||||||
|
try:
|
||||||
|
main() # Initialisierung
|
||||||
|
Seiten = 11 # hier kann man die Anzahl der Seiten ändern
|
||||||
|
while True: # endlos wiederholen
|
||||||
|
Seite = 1 # von Vorne zu zählen beginnen
|
||||||
|
while Seite <= Seiten: # so lange durchlaufen bis man bei der letzten Seite angekommen ist -> dann von vorne beginnen
|
||||||
|
zeile = (Seite) - 1 # Seitenname fängt bei 1 an <-> Array bei 0
|
||||||
|
datei = open("/home/pi/Temperaturmessung/text.txt", "r") # Datei text.txt zum Lesen oeffnen
|
||||||
|
inhalt = datei.readlines() # alle Zeilen lesen und in Array "inhalt" speichern
|
||||||
|
datei.close() # Datei schliessen
|
||||||
|
oben = beschreibungen[Seite - 1] # Beschreibung holen
|
||||||
|
unten = inhalt[zeile] # Wert holen
|
||||||
|
unten = unten[:-1] + " " + einheiten[Seite - 1] # Steuerzeichen am Ende loeschen und Einheit hinzufügen
|
||||||
|
anzeige() # oben und unten anzeigen
|
||||||
|
print(Seite, unten, oben)
|
||||||
|
time.sleep(3) # 2 Sekunden warten
|
||||||
|
Seite += 1 # Seite um 1 erhöhen
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
oben = ""
|
||||||
|
unten = ""
|
||||||
|
anzeige()
|
||||||
|
GPIO.cleanup()
|
||||||
|
print "Programm beendet"
|
||||||
|
sys.exit()
|
|
@ -1,11 +1,10 @@
|
||||||
\chapter{Einleitung}
|
\chapter{Einleitung}
|
||||||
|
|
||||||
Im letzten Jahr habe ich mich damit beschäftigt, wie man mithilfe eines Raspberry Pi Umweltdaten messen, aufzeichnen und auswerten kann. Hierzu verwende ich mehrere Sensoren, die die Lufttemperatur (sowohl im Klassenraum, als auch außen), Luftfeuchtigkeit, Luftdruck und die relative Luftqualität. Diese Daten werden als \gls{CSV} gespeichert und können grafisch und rechnerisch ausgewertet werden.
|
Im letzten Jahr habe ich mich damit beschäftigt, wie man mithilfe eines Raspberry Pi Umweltdaten messen, aufzeichnen und auswerten kann. Hierzu verwende ich mehrere Sensoren, die die Lufttemperatur (sowohl im Klassenraum, als auch außen), Luftfeuchtigkeit, Luftdruck und die relative Luftqualität. Diese Daten werden als \gls{CSV} gespeichert und können grafisch und rechnerisch ausgewertet werden.
|
||||||
\todo[inline]{genauere Beschreibung des Projekts}
|
\todo{genauere Beschreibung des Projekts}
|
||||||
%\begin{figure}[h]
|
\begin{figure}[h]
|
||||||
% \centering
|
\centering
|
||||||
% \includegraphics[width=0.9\textwidth]{figures/gesamt.jpg}
|
\includegraphics[width=0.9\textwidth]{figures/gesamt.png}
|
||||||
% \caption{PLATZHALTER (eigenes Werk)}
|
\caption{Messstation (eigenes Werk)}
|
||||||
% \label{fig:gesamt}
|
\label{fig:gesamt}
|
||||||
% \todo[inline]{schönes Bild von gesamten Teil}
|
\end{figure}
|
||||||
%\end{figure}
|
|
BIN
figures/gesamt.png
Normal file
BIN
figures/gesamt.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 554 KiB |
|
@ -116,7 +116,6 @@ Der Sensor wird über USB an den Raspberry Pi angeschlossen. Um die Daten unter
|
||||||
\includegraphics[width=0.9\textwidth]{figures/erstes_display.jpg}
|
\includegraphics[width=0.9\textwidth]{figures/erstes_display.jpg}
|
||||||
\caption{Erstes Display (eigenes Werk)}
|
\caption{Erstes Display (eigenes Werk)}
|
||||||
\label{fig:erstes_display}
|
\label{fig:erstes_display}
|
||||||
\todo[inline]{evtl Bild mit Steckverbindung/löschen/zu Software verschieben}
|
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
Damit nicht immer ein Computer benötigt wird, um die aktuellen Messwerte zu erfahren, verwende ich ein Display, welches diese anzeigt. Ursprünglich habe ich ein 16x2 Zeichen Display von \emph{Conrad Electronic} verwendet.\footcite{conrad_datenblatt}
|
Damit nicht immer ein Computer benötigt wird, um die aktuellen Messwerte zu erfahren, verwende ich ein Display, welches diese anzeigt. Ursprünglich habe ich ein 16x2 Zeichen Display von \emph{Conrad Electronic} verwendet.\footcite{conrad_datenblatt}
|
||||||
|
|
BIN
main.pdf
BIN
main.pdf
Binary file not shown.
Reference in a new issue