Problem: LEDs am Raspberry Pi über Blynk-app und Python-Code steuern

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
stefanpc81
User
Beiträge: 23
Registriert: Montag 14. Februar 2022, 13:38

Ach so! Jetzt verstehe ich das erst. Ich tippe mal darauf, dass an der Stelle

Code: Alles auswählen

GPIO.output(self.leds, [GPIO.HIGH for led in self.leds if active_led == led])
noch ein zweiter Wert fehlt, also GPIO.LOW. Nur wie schreibe ich das richtig in der ganzen Zeile? Dazu kommen muss dann wohl sowas in der Art:
GPIO.LOW for led in self.leds if not active_led == led
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ja, als zweite Liste, verknüpft mit der ersten. Oder du machst das alles etwas mehr zu Fuß, mit einzelnen LEDs und if-Verzweigungen.
stefanpc81
User
Beiträge: 23
Registriert: Montag 14. Februar 2022, 13:38

Code: Alles auswählen

def blink(self, active_led):
    for led in self.leds:
        if active_led == led:
            GPIO.output(self.leds, (GPIO.HIGH, GPIO.LOW))
        if not active_led == led:
            GPIO.output(self.leds, (GPIO.LOW, GPIO.HIGH))
Damit läuft zwar endlich das Blinken, aber mit dem gewünschten Abschalten mit dem virtuellem Pin auf aus bzw. 0 bleibt der letzte LED-Strang an. Mit VPin = 1 fängt er aber wieder wie gewünscht zu blinken an. Irgendwo muss also noch ein Fehler sein um beide LEDs auf LOW zu setzen. Ich habe es auf gut Glück versucht, in der Methode run() nach dem "while True" Zweig den folgenden Code zu testen, leider ohne Erfolg:

Code: Alles auswählen

while False:
    GPIO.output(self.leds, GPIO.LOW)
:
stefanpc81
User
Beiträge: 23
Registriert: Montag 14. Februar 2022, 13:38

Hallo,
so, ich habe nochmals über den Quellcode geschaut und eine ergänzende Idee bekommen:

Code: Alles auswählen

@isblinking.setter
def isblinking(self, value):
    if value:
        self._blink_event.set()
    else:
        self._blink_event.clear()
        GPIO.output(self.leds, GPIO.LOW)
Und siehe da, es macht jetzt alles wie es sein soll! Ich möchte euch abschließend nochmals für eure große Hilfe bedanken!
Viele Grüße und ein schönes Wochenende,
Stefan
Antworten