Hallo zusammen!
Ich verfolge das Thema Raspberry Pi nun seit einigen Jahren und habe immer wieder kleinere Projekte umgesetzt.
Nun komme ich allerdings an einen Punkt, an dem ich ohne Hilfe anscheinend nicht weiter komme.
Ich muss die Drehzahl eines Anemometers auswerten. Das Anemometer besitzt zwei Reed-Kontakte.
Ich habe an das erste Kabel des Anemometers 3.3V+ gegeben, das zweite Kabel an GPIO20 angeschlossen (inkl. PullDown-Widerstand).
Ich programmiere in Python 3, das hier ist aktuell Stand der Dinge, so auch nicht richtig, dass ist mir bewusst.
Mir fehlt einfach der richtige Ansatz, ich möchte die Interrupts (High's) zählen, welche ich in einer definierbaren Zeit(s) erhalte.
Hier mein bisheriger Code:
#!/usr/bin/env python
#coding: utf8
import time
import RPi.GPIO as GPIO
from tkinter import *
# Zählweise der Pins festlegen
GPIO.setmode(GPIO.BCM)
# Pin 18 (GPIO 24) als Eingang festlegen
GPIO.setup(20, GPIO.IN)
# Schleifenzähler
i = 0
root = Tk()
root.title("Windgeschwindigkeit")
Label(root, text="------------------").pack()
lb = Label(root, text=str(i))
lb.pack()
Label(root, text="------------------").pack()
#Messzeit (ms)
s = 0
# Ereignis-Prozedur für Eingang HIGH
def doIfHigh(channel):
# Zugriff auf Variable i ermöglichen
global i
# Wenn Eingang HIGH ist, Ausgabe im Terminal erzeugen
#print ("Eingang HIGH " + str(i))
# Schleifenzähler erhöhen
i = i + 0.5
# Ereignis deklarieren
GPIO.add_event_detect(20, GPIO.RISING, bouncetime = 100)
GPIO.add_event_callback (20, doIfHigh)
# Eigentlicher Programmablauf
while s < 1:
print (str(i))
time.sleep (0.1)
s = s + 0.1
else:
i = 0
mainloop()
Alles anzeigen
Jede ganze Zahl ist eine volle Umdrehung des Windrades, daher i = i + 0.5, sprich jede Ganzzahl in I ist eine Umdrehung.
Ich muss unterm Strich ein tkinter-Fenster haben, in dem immer die Aktuelle Windgeschwindigkeit abzulesen ist.
Die Umrechnungen zur Windgeschwindigkeit mache ich später selbst, ich benötige bitte nur Hilfe bei der Auswertung der Drehzahl.
Vielen lieben Dank!