[Schalter] Problem mit Signal von programmiertem Schalter. (Zu viele Signale)

  • Guten Tag allerseits!


    Hard/Software:


    Taster:
    Plus -> 10kOhm -> Schalter -> 1kOhm (von hieraus Verbindung zum Pin der Pi) -> GND (Auf Breadboard)


    PI 3B V1,2 2015
    Raspbian (aktuell)
    Python 2.7.1
    PyUserInput
    xlib


    [hr]
    import RPi.GPIO as GPIO
    import os
    import time
    from pykeyboard import PyKeyboard
    k = PyKeyboard()


    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(3,GPIO.IN)


    while True:
    if GPIO.input(3):
    k.tap_key('e')
    #Gleiches Ergebniss wie:
    # k.press_key('e')
    # k.release_key('e')


    time.sleep(.1)
    GPIO.cleanup()


    [hr]




    Folgendes Problem:
    Habe über die GPIO Pins nen Schalter programmiert so zu tun als wäre dieser eine bestimmte Taste oder Tastenkombination auf der Tastatur.
    Jetzt ist es so, das ich bei Tastendruck nicht ein "e" bekomme sondern 20 oder so.
    Mein erster Gedanke ist:
    Keine Ahnung wie es wirklich heißt also die Beschreibung:


    Kein Signal -> Beginn des Tastendrückvorganges -> extrem kurzes Signal -> kein Signal -> extrem kurzes Signal -> kein Signal ect pp -> Taster gedrückt = e -> Beginn des Tasterloslassenvorgangs -> kein Signal -> kurzes Signal -> kein Signal -> kurzes Signal ect pp -> kein Signal -> Ergebniss: Sehr viel mehr Buchstaben als gebraucht.


    Ist etwas verwirrend, ich weiß.


    Wie behebe ich das am besten? Persönlich wäre mir lieber das über Python zu machen. Da ich aber von der Existens dieses Programms erst seit dem 24.12.2016 wirklich weis hab ich nicht mal ne Idee wo ich suchen soll und Google will heute nicht mein Freund sein und hilft kein Stück weiter.


    PS: uinput hat zwar nur drei Buchstaben bei Tastendruck produziert, dafür war ich aber zu doof um Kombinationen zum laufen zu bekommen geschweige denn die Funktionstasten. Vorallem die Funktionstasten sind wichtig.

  • Hallo Opusa,


    suche mal nach

    Code
    Taster Entprellen


    Entprellen heißt auf englisch debouncing... eine wahre Fundgrube, wenn Du danach suchst.



    Es gibt da eine Software-Lösung und eine Hardware-Lösung.



    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

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    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.

    Edited once, last by Andreas ().

  • Das koennte ein Problem mit Prellen sein. Da der Taster mechanisch ist, schwingen da zB Metallzungen beim Tastendruck & erzeugen so ein Verhalten.


    Du verbesserst dein Programm deutlich durch Verwendung von add_event_detect. Findest du viel hier im Forum zu. Das erlaubt dir die Flanke auszuwaehlen, und auch die Angabe einer bounce_time - das ist der Parameter zur Entprellung.

  • Tjo hab jetzt alles mal auseinander gebaut um von Null nochmal anzufangen und habe ein kleineres Problem.
    Der Pi schaltet sich sofort ab sobald ich nen Knopf drücke. Egal wie rum ich dreh. Pi macht entweder garnichts oder schaltet bei Knopfdruck ab.
    Die rote LED vom Pi wird kurz weniger hell und dann geht der Pi aus.
    Jemand ne Idee woran das liegen könnte? Steh auf dem Schlauch...


    Diesmal: Plus; Schalter; 1kOhm zu Pi; 10kOhm zu Minus.
    Jemand ne Idee?

  • Hallo Opusa,



    Jemand ne Idee?


    Na, das sieht nach zu hohem Stromfluss über 3V3 über R und Taster zu GPIO aus. Bist Du Dir sicher, dass die Widerstände so sind, wie Du vermutest. Und bist Du Dir auch sicher, dass da beim Drüpcken des Tasters nicht eine Verbindung entsteht, die an den Widerständen vorbei eine geschlossenen Stromkreis ergeben, bei dem deutlich mehr Strom fließen kann.
    Denn Letzteres ist die einzige Möglichkeit, weshalb der Raspberry Pi sich einfach so verabschiedet - und die rote LED bestätigt dies.


    Welchen GPIO-Pin hast Du denn eingesetzt?


    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

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    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.

  • GPIO Pin 5 aber auch 3 zum Test.
    Ich hab die Widerstände vorher gemessen und laut Multimeter Benning MM1-2 tatsächlich 10k und 1k.
    Es zeigt auch einen Durchgangswert an durch alle Widerstände und Schalter von 0.5V, macht aber keinen Ton... Falls das was hilft.
    Dieses Mal habe ich mich an Vorlagen aus dem Netz gehalten um was auszuprobieren. Bei beiden geht alles über die Widerstände aber mit dem Unterschied die eine schaltet den Pi sofort ab und die andere macht absolut nichts.
    Hab auch vorher gemessen das es da ohne Betätigung des Schalters keinen Stromfluss gibt.
    Das Breadboard hab ich jetzt auch schon n paar mal durchgemessen und konnte keine Verbindgun finden die nicht sein darf.
    Ich lauf grad gegen ne Wand.

  • Hallo Opusa,


    kannst Du mal eine Zeichnung Deiner Schaltung anfertigen. Da gibt es eine Software, die das recht schöne Ergebnisse liefert:

    Code
    sudo apt-get install fritzing


    Ein gutes Photo aus der passenden Perspektive kann auch aussagekräftig sein.



    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

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    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.


  • Wie kann ich die GPIOs durchmessen oder prüfen ob ich es jetzt nicht doch geschafft hab und ein Pin hin ist?
    wiringPi sagt mir das die Pins alle IO seien.
    Die Anzeige schreibt aber nur was von 0:7: / 10:14: / 15:16: / 8:9:
    Hab aber Raspberry Pi 3B. Das wären dann aber etwas arg wenig Pins? :huh: :huh: :huh: :huh: :huh:

  • Bevor du anfängst wilde Messungen durchzuführen wäre ein genauer Schaltplan hilfreich zu zeigen. Du schreibst nämlich nur "Plus" aber nicht ob es sich dabei um 3V3 oder 5V handelt.
    Anhand dieser Information und der Gewissheit der reellen Verkabelung kann man ggf auf Messungen verzichten.




    PS: Die Einrückungen in deinem Script scheinen auch nicht zu passen, aber du hast auch keine CODE Blöcke genutzt, daher bitte das Script noch mal posten: FAQ => Nützliche Links / Linksammlung => HowTo: CODE / PHP Code im Forum posten

  • Nach dem ich jetzt rausgefunden habe wie ich das mache: Fritzing sei gedankt!
    Auf dem Bild sind beide Varianten zu sehen und beide wollen nicht...


    Bildupdate. Diesmal richtig gemalt. :wallbash:
    http://[/img]





    PyUserInput


    Uinput


    Progs zum Testen?:


    http://webiopi.trouch.com/


    http://wiringpi.com/

    Edited once, last by Opusa ().

  • Hallo Opusa,


    das erklärt jetzt, warum, Dein RPi sich ausschaltet!


    Suche mal nach

    Code
    Elektronik Kompendium Raspberry Pi Pullup Widerstand


    Wenn Du diesen Link öffnest, dann sollte Dir klar werden, dass bei der Version 2 ungehindert Strom von 3v3 nach GND fließen - ungehindert heißt soviel, wie der Raspberry Pi liefern kann. Und der gibt dafür sein letztes Hemd - bis zum letzten mA wird herausgepresst. Da muss der Raspberry Pi ausgehen.


    Aus den Schaltungen des Elektronik-Kompendiums geht hervor, dass die 10k8-Widerstände jeweils den Stromfluss zwischen 3V3 und GND verringern.Ein Widerstand direkt vor den GPIO-Eingang ist eigentlich nicht erforderlich, da der GPIO nach Programmierung als Eingang automatisch hochohmig gesetzt wird.


    Weshalb es allerdings die Schaltung Version 1 nicht tut, verstehe ich auch nicht - außer der Widerstand zwischen 3V3 und Taster ist so klein, dass dann auch wieder zuviel Strom fließt.


    Beste Grüße


    Andreas


    EDIT: Richi war schneller!

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

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    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.

    Edited once, last by Andreas ().

  • [Blocked Image: http://img5.fotos-hochladen.net/thumbnail/untitledsketch2y40fapqs6_thumb.jpg]


    Version 1 funktioniert. Auch mit anderen Schaltern.
    Version Zwei: Der Pi Hängt sich fast auf und produziert nach ca 10-20 sec. eine Unmenge an Zeichen und braucht sehr lange um das Programm mit strg+c zu terminieren...
    Jemand ne Idee was das Problem sein könnte? Ich seh es jedenfalls nicht...