Taster an GPIO

  • Hallo zusammen, ich habe jetzt Taster und Widerstände zu Hause und ausprobiert den Taster anzuschließen.

    Wenn ich GPIO26 gegen Masse schalte, den Taster dazwischen, funktioniert es mal und mal nicht.

    Mit einer Anleitung im Netz mit dem 10kohm Widerstand gegen 3,3V funktioniert es schon etwas besser, aber nach jedem 3 drücken geht es für eine ganze Zeit nicht.

    Ich habe mal ein Foto gemacht, wie mein Taster Anschluss aussieht.


    Angeschlossen ist der 3,3V Pin, GPIO26 und GRND.


    Kann mir jemand helfen?

    Ich will noch mehrere Taster anschließen.

    Kann ich dann den 3,3V Pin mehrmals verwenden parallel? Mit jeweils dann einen Widerstand?


    Ich habe meinen Taster jetzt mal auf GPIO 21 angeschlossen und hier treten diese anomalien nicht auf. Hier kann ich auch ganz normal mit is_pressed abfragen.


    Ist mein Pi kaputt oder ist der GPIO Pin 26 einfach scheiße?

  • Ist von der Schaltung her eigentlich ok.

    Hast du einen Pullup oder Pulldown in der Software definiert? Eine falsche Definition dort könnte stören. Es sollte kein Pullup-/Down softwareseitig definiert sein.

    Wie sieht dein Programm aus - vielleicht liegt der Fehler dort.


    Ja, wenn du mehrere Taster verwendest, schließt du 3,3 V mit mehreren Widerständen parallel an jeden GPIO/Taster an.

    Du kannst statt der Widerstände auch die softwareseitigen Pullups einschalten - die Meinungen, ob man besser externe Pullups oder die internen Pullups per Software benutzt, gehen auseinander. Mit den internen sparst du dir aber zumindest das ganze Gekabel mit den Widerständen...

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Hallo Gnom,

    vielleicht habe ich in meinem Code was falsch?



    Code
    import RPi.GPIO as GPIO
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(26, GPIO.IN)
    
    while True:
        if (GPIO.input(26) == True):
            print("Stop pressed")
  • Das musst du nicht in Klammern setzen: if GPIO.input(26) == True: reicht.

    Dann würde ich immer 2 Widerstände nehmen, egal ob du Pulldown oder Pullup machst, damit schonst du den Pi, falls mal etwas falsch beschaltet ist, oder softwareseitig etwas ungünstig läuft, z.B. 1KOhm an den GPIO und 10KOhm nach Masse, wegen dem Antenneneffekt der Kabel. Ansonsten Schaltplan zeigen.

    P.S. Ich würde noch ein time.sleep(0.1) unter print("") in die Schleife machen, damit die CPU nicht auf Vollast läuft. Zum Entprellen BounceTime.

  • Ich konnte jetzt den Fehler finden. Es liegt an GPIO26. Nur bei diesem Pin treten diese anomalien auf. Alle anderen Pins funktioniert es korrekt. Bei 26 kann ich auch nur mit not button.is_pressed abfragen