Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Alkoholsensor Messung
- # Version 2.3 mit Kommentaren
- #Import von Funktionen (z.b. Sensor-Auslesefunktionen)
- import time
- import RPi.GPIO as GPIO
- from datetime import datetime
- from Adafruit_MCP3008 import MCP3008
- # Setze Parameter für Sensor und Analog-Digital-Wandler MCP3008, cs=clockspeed
- GPIO.setmode(GPIO.BCM)
- mcp = MCP3008(clk=18, cs=25, miso=23, mosi=24)
- # Lese Werte ein
- messname = input("Wie soll die Datei heißen?: ")
- messungenprosek = input("wie viele Messungen pro Sekunde sollen Erfolgen?: ")
- # Berechne Zeit zwischen den Messungen
- sleepzeit= 1/float(messungenprosek)
- # Erzeuge Dateinamen aus Messname, Zeit und Dateiendung (.csv)
- dateiname = messname+"_"+datetime.now().strftime("%Y%m%d_%H%M%S")+".csv"
- #Öffne Datei mit gewähltem Dateinamen (dateiname) im Erstell-Modus (x)
- # x erstellt die Datei wenn sie noch nicht vorhanden ist, sonst fehler
- with open(dateiname, 'x') as datei:
- # schreibe erste Zeile in Datei (Spaltenköpfe)
- datei.write("Zeit;Spannung;Messzeit\n")
- #schließe Datei wieder
- datei.close()
- #Setze hilfsvariable auf 0
- tstart=0
- # Versuche oder fange fehler (keyboard_interrupt) ab -> except (Exception)
- try:
- # Starte unendliche Schleife
- while True:
- # lese Daten vom Sensor ein
- daten = mcp.read_adc(0)
- # prüfe ob tstart = 0? -> Wenn ja, ist dies die erste Messung
- if tstart==0:
- #speichere aktuelel Zeit in tmessung
- tmessung= datetime.now()
- #setze tstart auf tmessung (aktuelle zeit)
- tstart=tmessung
- #definiere tmessung der ersten Messung als 0
- tmessung=0
- # wenn nicht (normalfall für alle weiteren Messungen)
- else:
- # berechne vergangene Zeit (in Sekunden) seit erster Messung
- tmessung=(datetime.now()-tstart).total_seconds()
- # Berechne Spannungswert aus Ausgabe von Analog-Digital-Wandler und normiere auf Volt
- # 1024 weil der ADW 10Bit auflösung hat 2^10 = 1024 mögliche werte
- # 5 weil die Werte zwischen 0 und maximal 5V liegen
- spannung = daten * 5.0/1024
- #debug der Rohwerte vom ADW
- #print(str(daten))
- # gib Spannungswert auf der Konsole aus
- print("{:.3}V".format(spannung))
- # speichere die aktuelle Zeit in der variable zeit
- zeit = datetime.now()
- #öffne datei mit der option a (a steht für append also anhängen) nicht überschreiben
- with open(dateiname, 'a') as datei:
- # schreibe eine zeile mit aktueller Zeit, der gemessenen Spannung und tmessung
- datei.write(str(zeit)+";"+str(spannung)+";"+str(tmessung)+"\n")
- #leere internen Puffer und schreibe direkt in Datei
- datei.flush()
- #schließe Datei
- datei.close()
- #schlafe bis nächste Messung
- time.sleep(sleepzeit)
- # fange Keyboard interrupt ab und beende programm
- except KeyboardInterrupt:
- # gebe GPIO ports wieder frei
- GPIO.cleanup()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement