Fehler in der Programmierung

  • Guten morgen,




    ich habe mir gestern einen Raspberry Pi gekauft um mich mal an die Ansteuerung von LEDs mittels GPIO zu probieren. Ein normales Ein und Ausschalten nach bestimmten vorgaben ist mir bereits geglückt. Nun habe ich versucht drei LED`s nach einander anzusteuern. Erst soll die rote LED, dann die gelbe und zum Schluss die grüne LED leuchten.




    Wenn ich allerdings folgenden Code benutze:



    Leuchtet die grüne LED Dauerhaft. Irendwie stehe ich derzeit auf dem Schlauch und finde den Fehler nicht.

    Kann mir jemand schreiben wo der denkfehler liegt?? :danke_ATDE:

  • Du meinst, die Schleife läuft nur einmal ?

    Dann lass das Leerueichen vor der Klammer in Zeile 17 weg.

    for x in range(10):


    Und dass noch ein sleep fehlt, da kommst Du dann selber drauf.



    Servus !

    RTFM = Read The Factory Manual, oder so

  • Nein die Schleife läuft richtig durch. Die rote und die gelbe LED leuchten abwechselnd. Nur die grüne leuchtet vom Starten bis zum schluss des Codes durchgehen. Und ich komme nicht dahinter wieso.

  • Also dieser Code:

    gibt mir folgendes aus:

    Wie hast du denn die LEDs angeschlossen ?

    Widerstand ? Mit Transistor ?

    Nicht das es dir schon einen GPIO festgebrannt hat, grüne LEDs ziehen meist mehr Strom als rote und gelbe.

    Man sollte die GPIOs nicht mit mehr als 2mA belasten, auch wenn sie manchmal mehr vertragen.

  • Wenn ich die GPIOś vor der schleife auf 0 setzte kommt folgende meldung:

    Code
    ^
    IndentationError: unexpected indent
    >>> %Run 3LED_Steuerung.py
    Traceback (most recent call last):
      File "/usr/lib/python3.7/ast.py", line 35, in parse
        return compile(source, filename, mode, PyCF_ONLY_AST)
      File "/home/pi/Desktop/LED_Test_06-08-2021/3LED_Steuerung.py", line 20
        GPIO.output(33,0)
        ^
    IndentationError: unexpected indent


    Angeschossen sind sie mit einem 220 ohm wiederstand. Und wenn der Code nicht läuft sind ja auch alle LEDs aus.

  • Nach GPIO.cleanup() sollten alle GPIOs wieder aus sein, aber klar kann man noch vorher und hinterher auf 0 setzen.

    Leroy Cemoi Computerfehler :blush: Der macht einfach, was ich ihm sage. :shy:

    Korrigiert. :bravo2:

  • Wenn Du spi0 aktiviert hast, werden die GPIOs 35 - 39 als spi0 initialisiert, und damit auch die Pullup/Pulldown Widerstände eingestellt.

    Nimm andere GPIOs, oder schalte spi=on in der /boot/config.txt durch Auskommentieren # ab.

    Wie Du die gewählten GPIO schon beim Booten über die config.txt auf LOW (pulldown) einstellst, steht z.B. hier. https://www.raspberrypi.org/do…ration/config-txt/gpio.md


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Ich würde trotzdem gpiozero verwenden. Zumindest mal testen, ob damit das selbe Verhalten auftritt.

  • == Einrückungsfehler


    Bitte zeig zu Fehlermeldungen immer den Code, der diese Meldung geworfen hat!

    Okay .. danke für den Hinweis. Ich habe die Tab´s vor


    GPIO.output(33,0)

    GPIO.output(35,0)

    GPIO.output(37,0)


    die ich vor die Schleife gesetzt hatte weg gemacht. ( Aus programierzeiten von VisaulBasic war mir nicht bekannt das dies ein unterschied macht! )

    Macht es aber. Denn jetzt gibt die Kommandozeile keinen Fehler mehr aus. Aber die grüne LED leuchtet dennoch durchgehend.

  • Ich würde trotzdem gpiozero verwenden. Zumindest mal testen, ob damit das selbe Verhalten auftritt.


    Also bei dieser Variante gehen zumindest alle LED´s an und aus. :) also liegt es nicht am GPIO :conf: