taster am PI

  • hallo an alle,

    ich habe mich versucht in die Welt der Taster zusammen mit dem Pi einzuarbeiten aber leider habe ich wahrscheinlich noch nicht genügend Wissen um dies zu meistern.

    angefangen hat alles mit diesem Tut:
    https://www.youtube.com/watch?v=HhfzRn2WcDQ#t=44.4772124

    hier baute ich den Schaltkreis bis auf die LED´s nach. Jedoch ist es mir leider bis jetzt noch nicht möglich gewesen herauszufinden welchen Wiederstand der Tutor nutzt.
    Ich habe das Problem das mit Taster den Wert 0 im offen Zustand haben soll und er laut Skript deswegen gesetzt sein soll.

    Das heißt laut Skript erfülle ich den Teil der Schleife if(GPIO.Input(10) == False)
    Jedoch sollte eher der ELSE Teil erfüllt sein.

    Da ich ja was Elektrotechnik betrifft ein totaler Anfänger bin habe ich mir auch diese hier angeschaut.
    https://raspiprojekt.de/machen/basics/hardware/147-gpio-grundlagen.html?showall=&start=3

    Hier wird Pulldown und Pullup Wiederstand erklärt.
    Nun wurde mir noch gesagt das es Unterschiede zwischen Python2 oder Python3 gibt. JA wie sehe ich das denn nun noch?
    Ich habe ein Raspberry Pi2.

    GNU nano 2.2.6 Datei: 4_button.py

    #!/usr/bin/python
    import os
    import time
    import RPi.GPIO as GPIO
    GPIO.setmode(GPIO.BCM)
    GPIO.cleanup()

    GPIO.setwarnings(False)
    #GPIO.setup(10, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
    GPIO.setup(10, GPIO.IN)
    GPIO.setup(19,GPIO.IN)
    print("------------------")
    print(" Button + GPIO ")
    print("------------------")

    print GPIO.input(10)
    print GPIO.input(19)

    while True:
    if ( GPIO.input(10) == False :(
    print("Button Pressed")
    os.system('date')
    print GPIO.input(10)
    time.sleep(5)
    else:
    os.system('clear')
    print ("Waiting for you to press a button")
    time.sleep(1)


    Alles zusammen habe ich nicht wirklich Ahnung wo ich nun anfangen und aufhören soll mit der Fehlersuche und hoffe nun auf ein paar Tipps von euch.

    Einmal editiert, zuletzt von tutter (5. Oktober 2016 um 22:59)

  • > Jedoch ist es mir leider bis jetzt noch nicht möglich gewesen herauszufinden welchen Wiederstand der Tutor nutzt
    Gelb-Violett-Rot -> 4k7, also 4700 Ohm

    Bei den anderen bin ich mir nicht sicher. Wahrscheinlich ist es:

    Orange-Orange-Braun -> 330 Ohm

    Das ist eher wenig, normalerweise ist es eher ein 560 Ohm. Das gilt aber nur fuer LEDs die wenig Strom brauchen

    Die Schaltung im Video ist ein Pull-Up. Sie gibt einen High-Pegel wenn der Schalter offen ist.

    Die Python-Version ist fuer dieses Script egal, es hat nichts drin was von der Version abhaengig ist.

    Uebrigens ist ein Fehler im Video. Die letzte Zeile gehoert eingerueckt, sonst ist sie ausserhalb der Schleife.

  • ich bin wissenstechnisch noch nicht auf dem höchsten Stand. Aber aktuell nutze ich an statt des 4,7kOhm Wiederstandes ein 10 kOhm Wiederstandes. Verfälscht dieser das rgebnis so sehr das ich nicht zum richtigen Ziel gelange?


    Ich teste das heute abend noch mal aus und messe mal durch wann und ob die Spannung steigt oder fällt!

    danke erst mal für deine Mühe

  • Du kannst auch 10K nehmen. Das ist letztlich egal. In den Foren FAQ findest Du zu dem von Dir geschilderten Problem das hier: [FAQ] Wie schließe ich einen Taster an den GPIO an? Was ist ein Pullup / Pulldown?

    Wenn Du eine LED am GPIO betreiben möchtest, muss der Vorwiderstand so groß sein, dass nicht mehr als 2-3mA an Strom fließen. "Normale" LED haben einen sehr hohen Stromverbrauch, weshalb sie für den Einsatz am RasPi-GPIO ungeeignet sind, da der Vorwiderstand extrem hoch sein muss, wodurch sie relativ dunkel werden. http://www.reichelt.de/LEDs-3-mm/LED-…rtnr=LED+3MM+RT

    Low Curruent LEDs beheben das Problem. Sie benötigen einen wesentlich geringeren Strom. Trotzdem sollte man hier auch hohe Vorwiderstände >=480 Ohm verwenden, weil sie sonst unangenehm hell sind. Wie groß der Vorwiderstand sein soll ist Geschmackssache. Du kannst nichts dadurch kaputt machen, dass er zu hoch ist.
    http://www.reichelt.de/LEDs-3-mm/LED-…=LED+3MM+2MA+RT

  • Neueinsteiger danke für den Link der hat mir wirklich sehr geholfen! nun noch mal zurück zu meinen weiteren Problemen. Ich habe einen Pi 2 und habe (laut Skript vorlage siehe oben) durch das setzen von GPIO.setmode(GPIO.BCM) mich für BCM entschieden. Ich weiß zwar noch nicht warum aber ich weiß das GPIO.setup(10, GPIO.IN) auf dem PI Pin 19 ist. Jedoch ändert das alte Kriebel nie seinen Zustand. Warum? drücke ich den Taster ändert sich die Spannung von 0 Volt auf 3,3V (ohne LED). Das heißt doch das am BCM Gpio 10 ein High anliegen soll. Das müsste doch in meinem Skript zu einem True führen und er müsste mir mit print den Text Waiting for you to press a button!
    Jedoch wie gesagt sagt mir print GPIO.input(10) = 0

    hier ist doch was faul? oder habe ich etwas falsch verstanden? Aber das würde der Messung widersprechen!

  • Das [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]GPIO.cleanup() muss weg ![/font]

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Danach laeuft's vermutlich...[/font]

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Im Video ist das uebrigens nicht drin, also genau hinsehen.[/font]

  • danke tell! habe den Fehler gefunden! der Pi2 hat ja mehr Pins und das habe ich alles irgendwie falsch gelesen und keine richtige Abbildung mit allen Pins in BCM gefunden! so habe ich die falschen Pins verkabelt! Fehler ist aber jetzt behoben und ich bin stolz auf mein werk

  • GPIO.cleanup()

    Setzt die GPIO's auf ihren Standard zurück, üblicherweise nicht definiert also keine Deklaration und nicht abfragbar. Ähnlich wie "unexport"


    Ich empfehle dir generell lieber "Interrupt" zu verwenden - eine while Schleife wie du es nutzt ist sog. Polling und eher ungenau bzw würde Deine Schleife nahezu 100% CPU Last erzeugen da sich die Schleife, ungehindert extrem(!) schnell rotiert.

    Mittlerweile sollte man aber lieber das weitaus bessere Module gpiozero verwenden, dessen Umgang extrem einfach(er) ist.

    Das Bild im Anhang gilt für alle Pi's ab dem Model B+, also auch für den Pi2 und Pi3

  • klingel_intern_anonym.py
    ich versuche an meinem Raspberry pi2 ein Relais als Taster für Klingelengang anzuschließen.

    hab schon viel gegoogelt und ach hier gelesen und Anleitungen gefunden.

    im Prinzip funktioniert das soweit auch,
    mein Programm dazu hab ich inzwischen so erweitert,
    das beim klingeln ein Anruf auf Asterisk erfolgt und die eingestellten Telefone klingeln.
    Ausserdem werden beim klingeln noch 2 Bilder von den Webcams geholt und gespeichert.

    2 Probleme hab ich allerdings noch!
    mein GPIO Eingang hat immer noch Störimpulse drauf, blinder Alarm!
    hab den Eingang mit einem 10kOhm Wiederstand auf Plus 3,3V geschaltet,
    Taster gegen Minus.
    sind nicht viele Störimpulse, aber Licht einschalten in dem Raum wo der Raspberry ist, lößt klingeln aus!

    beholfen hab ich mich jetzt erst mal damit, das ich in dem Python Script nach 2 Sehunden eine 2. Abfrage mache, ob es auchh wirklich klingelt!
    das funktioniert, ist aber nur eine Behelfslösung.

    Anderes Problem, hab oben gelesen, man sollte den Taster per Interrupt abfragen.
    da hab ich noch nicht passendes gefunden, wie ich das in mein Script einbinden kann?

    hab mein Script als Anhang dabei, falls das funktioniert hat!

Jetzt mitmachen!

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