Archived
1
0
Fork 0

Text fortgesetzt

This commit is contained in:
Findus23 2014-12-15 18:45:10 +01:00
parent 295dc501da
commit db04e16f47
5 changed files with 134 additions and 9 deletions

127
code/display.py Executable file
View 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()

View file

@ -1,11 +1,10 @@
\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.
\todo[inline]{genauere Beschreibung des Projekts}
%\begin{figure}[h]
% \centering
% \includegraphics[width=0.9\textwidth]{figures/gesamt.jpg}
% \caption{PLATZHALTER (eigenes Werk)}
% \label{fig:gesamt}
% \todo[inline]{schönes Bild von gesamten Teil}
%\end{figure}
\todo{genauere Beschreibung des Projekts}
\begin{figure}[h]
\centering
\includegraphics[width=0.9\textwidth]{figures/gesamt.png}
\caption{Messstation (eigenes Werk)}
\label{fig:gesamt}
\end{figure}

BIN
figures/gesamt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 554 KiB

View file

@ -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}
\caption{Erstes Display (eigenes Werk)}
\label{fig:erstes_display}
\todo[inline]{evtl Bild mit Steckverbindung/löschen/zu Software verschieben}
\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}

BIN
main.pdf

Binary file not shown.