GPIO Ausgänge schalten nicht korrekt (time.sleep wird ignoriert)

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo zusammen,

    es klingt ziemlich mysteriös, aber meine GPIO Ausgänge schalten nicht korrekt. Teilweise beim ersten mal nach einem Neustart schon, dann aber nicht mehr richtig.

    Megasimpler Aufbau und megasimples Programm. Mit etwas Zeitverzögerung einen Ausgang schalten:

    Ich habe das mal per Video dokumentiert, glaubt einem ja sonst keiner :)

    Hier sieht man was beim zweimaligen Programmstart passiert, erster Lauf OK, beim zweiten werden die 5 Sekunden time.sleep ignoriert, warum?

    https://photos.app.goo.gl/mpvBNQ14tzmE4yeF8


    Etwas erweiteter Versuchsaufbau mit 2 Ausgängen, hier kommt er auch durcheinander

    Auch hier das Ergebnis, wenn man das Programm 2x durchlaufen lässt (ich verspreche mich am Anfang, es sollte NICHT heißen "16er", sondern "6er")

    https://photos.app.goo.gl/dLgvYkHBizXytZAT8

    Hier wird neben dem Ignorieren des time.sleep auch das Schalten der Ausgänge durcheinander gebracht.

    Was kann das sein, hat jemand einen Tipp woran dieser Effekt liegen kann,

    besten Dank für Hinweise

    Axel

  • GPIO Ausgänge schalten nicht korrekt (time.sleep wird ignoriert)? Schau mal ob du hier fündig wirst!

  • Zur hilfreichsten Antwort springen
  • Hallo,

    Du setzt mit cleanup den Port auf Input-Mode.

    Er ist aber intern noch auf High.

    Beim nächsten Start setzt du ihn auf Output.

    Ab da ist er dann schon High.

    Vor dem Time Sleep.

    Das ist nur eine Vermutung.

    Las mal das cleanup weg.

  • ...und ist auch nicht komplizierter

  • Hallo __deets__ , hallo Hofei,

    nochmal vielen Dank für Eure Antworten!

    Ich muss mal etwas ketzerisch fragen, warum das RPI.GPIO nicht mehr verwendet werden sollte.

    Wenn man sich eher selten mit Python und dem Raspberry auseinandersetzt (und daher schlicht keine Ahnung und Routine hat) ist man halt froh wenn es klappt - und scheut daher den "Umbau". Bei Euch merkt man halt, das das absolute Kleinigkeiten sind. Ich habe berechtigte Sorge, dass ich irgend etwas falsch mache und es daher nicht klappt (und da ich keine Ahnung habe einen Minifehler ewig suche).

    Nichtsdestotrotz will ich es versuchen! :)

    Die "PWM-Funktion" benötige ich auch, das kann wohl auch gpiozero. Muss ich sonst noch etwas beachten?

    Lieben Dank!

    Axel

  • Hallenmeister1199 :

    hi, hallo, ich verstehe dein problem nicht:

    1. fertige backups an

    2. mache evtl fotos von deinen schaltungen etc, so dass du diese wieder zurückbauen kannst, ODER: fange ganz von vorne an ...

    --- wer lesen kann, ist klar im Vorteil ---

    --- man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug ---

    --- der Fortschritt der Menschheit ist das Werk der Unzufriedenen ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---

  • Hallo,

    Zitat

    Ich muss mal etwas ketzerisch fragen, warum das RPI.GPIO nicht mehr verwendet werden sollte.

    Weil RPi.GPIO alt / veraltet ist und gpiozero das aktuelle Modul ist, was auch von der Raspi Foundation empfohlen wird. Bei gpiozero ist eigentlich alles besser: die API, die Doku, der Funktionsumfang.

    Zitat

    dass ich irgend etwas falsch mache und es daher nicht klappt (und da ich keine Ahnung habe einen Minifehler ewig suche).

    Du hast was falsch gemacht und den Fehler nicht gefunden - mit RPi.GPIO. Wie weiter oben schon steht: den Fehler hättest du so mit gpiozero gar nicht machen können.

    Zitat

    ist man halt froh wenn es klappt

    Das ist absolut kein Grund, altes zu nutzen. Das ist genau so, als würdest du sagen: "ich nutze selten einen Rechner, darum nehme ich noch Windows XP und nicht Windows 10."

    Programmieren lernt mal halt durch: viel programmieren. Wenn man das ab und an macht, macht man halt mehr Fehler und muss halt mehr nachlesen. Ist halt so. Das ist aber definitiv kein Grund, auf veralteten Techniken (wie RPi.GPIO) hängen zu bleiben.

    Gruß, noisefloor

  • Mir gefällt die API und dadurch die Verwendung von gpiozero viel besser.

    Was ich aber immer ehrlich gesagt nicht ganz nachvollziehen kann ist, das "veraltet".

    Version 0.7 von RPi.GPIO ist vom 21 Juli 2019

    Ebenso verwendet gpiozero im Hintergrund im RPi.GPIO oder ähnliches als Pin Treiber:
    https://gpiozero.readthedocs.io/en/stable/faq.…import-gpiozero

    Aber um das nicht falsch zu verstehen, meine Empfehlung ist auch ganz klar gpiozero, weil man damit schneller, einfach und schöner zum Erfolg kommt.


    EDIT:

    hi, hallo, ich verstehe dein problem nicht:

    1. fertige backups an

    noch besser, einfach Versionieren mit git

    2. mache evtl fotos von deinen schaltungen etc, so dass du diese wieder zurückbauen kannst, ODER: fange ganz von vorne an ...

    und einen Schaltplan zeichnen. Aber nur durch die Umstellung von RPi.GPIO zu gpiozero muss man nichts umverkabeln.

  • Du hast einen Minifehler gemacht. Du hast ihn ewig gesucht. Du hast sogar Videos davon gemacht.

    Und dann sagen wir dir, das dieser Minifehler mit gpiozero nicht möglich ist. Wieviel besser soll man das begründen?

  • Die API von RPi.GPIO ist zu low level für Anfänger.

    Bei der API von gpiozero muss man weniger nachdenken. Triviales wie z.B. blinken ist auch bereits implementiert.

Jetzt mitmachen!

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