Wie 2 GPIOs mit abwechselnd blinkenden LEDs über einen Button mit Blynk ansteuern?

  • Hallo,

    ich habe mir das Raspberry Pi 3B+ geholt und bin ein Newbie hierbei. Ich kann bereits mit der App Blynk am Smartphone mit einem Button eine LED-Kette über die GPIOs ein- und ausschalten. Soweit gut.

    Nun möchte ich aber zusätzlich folgendes realisieren:

    Am GPIO 22 und 23 sollen je 2 LEDs angeschlossen werden. Diese sollen zunächst aus sein. Mit nur einem Klick über die Blynk app möchte ich erreichen, dass abwechselnd nur eine Strang, also 22 ein und 23 aus bzw. umgekehrt, für je eine Sekunde leuchtet. Mit anderen Worten eine Blinkschaltung. Sobald auf denselben Button (oder Pin oder was ich da nehmen kann) im Blynk geklickt wird, soll die Blinkaktion wieder komplett aus sein.

    Ich habe seit gestern im Netz danach gesucht und zu solch einem Vorhaben nichts gefunden. Dass ich höchstwahrscheinlich mit Python3 programmieren muss und es auch gerne tun würde (Vorkenntnisse Javascript und teilweise C#), soll nicht das Problem sein. Wie muss ich aber prinzipiell das ganze softwaremäßig mit Python3 (auf dem Raspberry Pi OS bereits installiert) und Blynk lösen? Kann ich einen Button bei Blynk als virtuell mit z.B. 'V1' wählen (zu virtuell habe ich im Netz nur den 'Pin' aber nichts zum 'Button' gefunden) und dann in der .py-Datei den Rest programmieren, wäre das eine Lösung? Ich weiß allerdings noch nicht konkret wie...

    Vielen Dank für hilfreiche Antworten und viele Grüße,

    Stefan

  • Wie 2 GPIOs mit abwechselnd blinkenden LEDs über einen Button mit Blynk ansteuern?? Schau mal ob du hier fündig wirst!

  • Hallo,

    nach weiterer Suche habe ich mir folgendes zusammengeschustert:

    from gpiozero import LED

    from time import sleep

    import blynklib

    led1 = LED(22)

    led2 = LED(23)

    BLYNK_AUTH = '...'

    blynk = blynklib.Blynk(BLYNK_AUTH)

    while True:

    def v1_write_handler(pin, value):

    status = value[0]

    if int(status) == 0:

    led1.off()

    led2.off()

    elif int(status) == 1:

    led1.on()

    led2.off()

    sleep(1)

    led1.off()

    led2.on()

    sleep(1)

    blynk.add_virtual_pin(1, write=v1_write_handler)

    blynk.run()

    Könnte der Code so unter Python3 klappen? Mit Pin V1 in Blynk mit den Zuständen 0 und 1.

    Grüße

  • Hallo,

    in Python sind im Allgemeinen die Einrückungen sehr wichtig, so funktioniert es nicht.

    Auf Modulebene sollte nur Code stehen, der Konstanten, Klassen oder Funktionen definiert.

    In einer Dauerschleife erstellt man keine Funktion, die wird außerhalb erstellt und in der Schleife aufgerufen oder je nach dem wo und wann sie eben gebraucht wird.

    Um Python allgemein zu verstehen, hilft das Tutorial:

    The Python Tutorial — Python 3.9.6 documentation

    Schau mal hier gibt es verschiedene Beispiele, ist da nichts für dich dabei?

    Ich habe leider noch nie mit 'blynk' gearbeitet, kann dir deswegen auch kein Beispielcode liefern.

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!