ich bin neu im Forum und habe erst seit einiger Zeit angefangen mich mit Python zu beschäftigen. Ich hoffe, hier kann mir jemand bei meinem Vorhaben weiterhelfen, da ich seit einigen Tage durch verschiedene Quellen gegangen bin, um eine Lösung für mein Problem zu finden.
Kurz zu meinem Vorhaben. Ich möchte mit einem Regler, welches über die GPIO verbunden ist, die Lautstärke von einem Lautsprecher steuern, welches über Netzwerk gebunden ist.
Ich habe an meinem Raspberry Pi3 einen Inkrementalgeber KY040 angeschlossen und einen Skript erstellt, welches einen Wert zwischen 0 und 120 erzeugen kann.
Dateiname: Skript_1
Code: Alles auswählen
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
# Hier werden die GPIO deklariert
PIN_CLK = 5 #Pin 29
PIN_DT = 6 #Pin 31
BUTTON_PIN = 13 #Pin 33
GPIO.setup(PIN_CLK, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(PIN_DT, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)
# Benötigte Variablen werden initialisiert
Counter = 0
test=56
Richtung = True
PIN_CLK_LETZTER = 0
PIN_CLK_AKTUELL = 0
delayTime = 0.01
# Initiales Auslesen des Pin_CLK
PIN_CLK_LETZTER = GPIO.input(PIN_CLK)
# Diese AusgabeFunktion wird bei Signaldetektion ausgefuehrt
def ausgabeFunktion(null):
global Counter
PIN_CLK_AKTUELL = GPIO.input(PIN_CLK)
if PIN_CLK_AKTUELL != PIN_CLK_LETZTER:
if GPIO.input(PIN_DT) != PIN_CLK_AKTUELL:
Counter += 5 #Zählschritte
if Counter < 0: #Zählbereich zwischen 0 und 120 eingrenzen
Counter = 0
if Counter >120:
Counter = 120
Richtung = True
else:
Richtung = False
Counter = Counter - 5
if Counter < 0: #Zählbereich zwischen 0 und 120 eingrenzen
Counter = 0
if Counter >120:
Counter = 120
Richtung = True
print ("Volume: ", Counter)
def CounterReset(null):
print ("Mute")
Counter = 0
# Um einen Debounce direkt zu integrieren, werden die Funktionen zur Ausgabe mittels
# CallBack-Option vom GPIO Python Modul initialisiert
GPIO.add_event_detect(PIN_CLK, GPIO.BOTH, callback=ausgabeFunktion, bouncetime=50)
GPIO.add_event_detect(BUTTON_PIN, GPIO.FALLING, callback=CounterReset, bouncetime=50)
# Hauptprogrammschleife
try:
while True:
time.sleep(delayTime)
break #um es im Hauptskript anzubinden
# Aufraeumarbeiten nachdem das Programm beendet wurde
except KeyboardInterrupt:
GPIO.cleanup()
Dateiname Skript 2:
Code: Alles auswählen
import Drehregler
class test():
def setValue():