Gpio Output auslesen

  • Hallo ich möchte mit einem python programm den gpio22 ausschalten falls er an ist

    Code
    import RPi.GPIO as gpio
    gpio.setmode(gpio.BCM)
    gpio.setup(22, gpio.OUT)
    if gpio.output(22) == HIGH:
        gpio.output(22, gpio.LOW)


    kann mir jemand sagen ob es irgendwie möglich ist den status eines output pins abzufragen(ohne das er zu einen Input pin als masse führt)

  • Dein Script läuft ein mal durch aber wird dann beendet. Es ist keine Methode vorhanden nach starten des Script eine fortlaufende Überprüfung durchzuführen.

    In der letzten Zeile hast du zudem einen kleinen Fehler drin. das 2.Argument für gpio.output() sollte der gewünschte Zustand sein also HIGH oder LOW ; 1 oder 0 ; True oder False


    Aber ich bin mir grad nicht sicher was das überhaupt für ein Sinn haben soll. Da der GPIO als OUTPUT konfiguriert ist, aber in deinem Script der Ausgang nicht eingeschaltet wird, kann das Script nichts tun

  • Hallo gaistg,

    ich frage mich, wozu Du den Status eines Ausgabe-Pins wissen möchtest. :s

    Bei einem Ausgang liegt es immer im Verantwortungsbereich des Programmierers, zu wissen, mit welchem Wert er den Ausgang belegt hat.

    Der Status eines Ausgabepins kann sich auch nicht einfach so mal ändern - dass es jetzt interessant sein könnte, den Status abzufragen.

    Ein abgefragter Status wird immer identisch mit dem sein, was das Programm zuletzt auf dem Pin ausgegeben hat.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo,

    Mein Problem ist das selbe. Ich habe eine GUI erstelt mit mehreren Softkeys und zu jedem Softkey ein Statusfeld. Jetzt hat jeder Sofkey eine eigene Funktion(def ..(): ).

    Schalte ich z.B. LED1 in der GUI an setze dann den Status auf 1 passt alles. Aber wenn ich dann LED2 einschalte und den Status setzen will setzt er ihn zwar, jedoch wird der Status von LED 1 zurückgesetzt. Deshalb bräuchte ich auch hier eine Abfrage ob denn die LED1 noch an ist oder nicht.

    Kennt da keiner eine Möglichkeit?

    Grüße

  • Hallo Elektrotechnik_89,

    unterscheide folgende Zustände:
    1. GPIO als Ausgang: Der einmal gesetzte Zustand (0 oder 1, HIGH oder LOW) bleibt solange aufrechterhalten, wie Du die Stromzufuhr aufrechterhältst - oder softwareseitig änderst.
    2. GPIO als Eingang: Hier wird irgendein angelegtes Signal ausgelesen. Bei jedem Auslesen kann dies ein anderer Wert sein, es kommt darauf an, was Deine Schaltung gerade macht. Häng doch mal ein längeres Kupfel-Kabel an einen auf Eingang programmierten GPIO und frage mal den Zustand ab. Da hast Du extrem häufige Wechsel zwischen LOW und HIGH - ohne das irgendwer irgendwas dran dreht.

    Einen als Eingang programmierten GPIO kannst Du nicht einfach so auf einen Wert setzen. Das ist nur bei Ausgängen erlaubt.

    Den Wert eines auf Ausgang programmierten GPIO brauchst Du demzufolge auch nicht auslesen können, da der Wert der gleiche ist, den Du mal drauf gegeben hast.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (5. März 2015 um 20:40)

  • Hi
    vll war die Frage etwas falsch formuliert. Es bezog sich auf den Status der LED, was bei mir eine Variable ist, den ich in der GUI anzeigen wollte nicht auf den Zustand des PINs(HIGH,LOW).
    Hab den Fehler gefunden. Lag an meinen fehlenden Programmier Skills.

    Vielen Dank für eure Hilfe

Jetzt mitmachen!

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