HIGH und LOW anzeige

  • Guten Morgen,


    ich hab folgendes Problem,


    beim ausführen kommt alle 5 Sekunden einfach ein HIGH und ein LOW.

    Ich hab auch schon die Kontakte abgezogen, damit auf jedenfall kein HIGH ausgegeben werden sollte, aber er gibt trotzdem immer beides aus.


    sieht irgendjemand mein Fehler?:wallbash:



  • Vergleich mal Zeile 18 und Zeile 24. Fehlt da nicht die Bedingung in Zeile 24?:

    if GPIO.input(16) == GPIO.HIGH:

    Moin und danke für deine Antwort,


    ich muss wohl dazu sagen, dass ich mehrere sachen schon probiert habe :D


    wenn ich folgendes mache:


    dann gibt er nur ein LOW aus.


    stimmt was mit meiner schleife vielleicht nicht?

  • Hallo,


    habe ich jetzt einen Denkfehler oder Du?


    Der Pin ist als Eingang deklariert. Wenn kein Strom fließt (z.B. Taster) ist der doch immer low oder bin ich noch nicht richtig wach? :conf:

    "Alles, was wir sind, ist Sand im Wind, Hoschi."

  • Zudem sollte man auch bedenken, dass ein Kabel wie eine Antenne wirkt und durch Störsignale der Status des GPIOs gern mal hin- und herhopst.

    Gibt es einen 10kOhm-Entstörwiderstand nach Masse ?

    BTW: Nimmst du jetzt Pin 16, wie im ersten Beispiel, oder Pin 18 wie im zweiten Beispiel ?

    Der despotische Bierbaron sagt: Kein Support per PN ! :angel::wink:

  • Mal Pin 16, mal Pin 18...

    Was heißt, ergibt nur ein Low aus? Wenn du den Eingang mit GND verbindest (bzw. auch, wenn du ihn offen lässt, denn er hat ja den Soft_PD), muss er low ausgeben, wenn du den Eingang mit 3,3V verbindest, muss er high ausgeben. Wie sieht denn deine Eingangsbeschaltung aus?


    Das Skript in der letzten Form müsste eigentlich funktionieren. Was passiert denn, wenn du 3,3 V an den Eingang legst?

    Einmal editiert, zuletzt von Gnom ()

  • Zudem sollte man auch bedenken, dass ein Kabel wie eine Antenne wirkt und durch Störsignale der Status des GPIOs gern mal hin- und herhopst.

    Naja.... für den Fall ist es eher irrelevant, da müssen schon fett Störsignale vorhanden sein...

    Gibt es einen 10kOhm-Entstörwiderstand nach Masse ?

    Was soll ein "Entstörwidestand nach Masse" bitte sein? Das, was Du meinst, ist ein PullDown und ist dazu da um den definierten Pegel zu haben.


    Rodinator : Was machst Du eigentlich? Du liest einen digitalen Eingang ein, richtig? Was hängt dran? Wie sieht Deine Schaltung aus? Was Du probieren kannst, den "software PullDown" aus dem Python Skript zu entfernen und gegen einen Widerstand nach Masse zu ersetzen (10k oder 4k7). Du brauchst einen definierten Pegel (HIGH oder LOW) und von dem ausgehend schaltest Du dann. Wenn Du ein LOW nimmst (also mit einem PullDown), schaltest Du gegen 3.3V und bei HIGH (PullUp) gegen GND.

  • Danke erstmal an alle für die Antworten,


    ich schick euch mal meine skizze von meiner ungefähren Schaltung.

    Und zu dem nochmal was ich machen will:


    Ich will, dass wenn auf mein Taster gedrückt wird, ein HIGH aus gegeben wird ansonst soll ein LOW ausgegeben werden. bzw dann später in meine CSV eine 1 oder 0 rein geschrieben werden.

    ....

    was passiert jetzt gerade: er gibt jede Sekunde wie gewollt ein LOW (ist ja Logisch), aber wenn ich auf mein Taster drücke passiert nichts...also es wird weiterhin nur ein LOW ausgegeben.


    Einmal editiert, zuletzt von Rodinator ()

  • 1.) Das ist kein vernünftiger Schaltplan.

    2.) Die Schaltung ist gefährlich für deinen Pi, weil wenn der Schleifer des Potis durch ist, kommen 5 Volt auf den GPIO.

    3.) Die Massen gehören zusammengeschaltet.

    Der despotische Bierbaron sagt: Kein Support per PN ! :angel::wink:

  • 1.) Das ist kein vernünftiger Schaltplan.

    2.) Die Schaltung ist gefährlich für deinen Pi, weil wenn der Schleifer des Potis durch ist, kommen 5 Volt auf den GPIO.

    3.) Die Massen gehören zusammengeschaltet.

    1, ich habs jetzt nur schnell hin gezeichnet

    2. es ist ein Spannungswandler zwischen, der auf 2,8V regelt

  • Danke, ich werde das versuchen umzusetzen, jedoch kann ich mir immer noch nicht vorstellen warum dadurch mein Problem gelöst werden sollte.

  • Deine externe Stromversorgung des Tasters ist unnötig. Und wenn, dann müsstest du GND von der externen Versorgung und Pi verbinden.

    Um deiner Lösung einen Schrtt näher zu kommen, verbinde mal einen 3,3V-Pin (Pin 1 oder 17) des Pi mit dem Eingang (Pin 18). Zur Sicherheit solltest du einen 1K-Widerstand dazwischen schalten! Dann sollte er high anzeigen.

    Wenn du dann noch einen Taster dazwischen baust, hast du, was du willst - nur ohne externe Versorgung und ohne das unselige Poti.

  • Dann gleich mit diesem Shebang, wenn auch noch mit RPi.GPIO:

    Code
    1. #!/usr/bin/python3
    2. import time
    3. import RPi.GPIO as GPIO
    4. from subprocess import call
    5. GPIO.setmode(GPIO.BOARD)
    6. GPIO.setup(18, GPIO.IN)
    7. while 1:
    8. time.sleep(0.5)
    9. if GPIO.input(18) == GPIO.HIGH:
    10. print("Knopf gedrückt")

    Der despotische Bierbaron sagt: Kein Support per PN ! :angel::wink: