Piface Taster S1-S4

  • Hallo,
    seit Tagen bin ich am suchen aber finde folgene Info nicht:

    Welche gpios sprechen die Tasterr S1-S4 auf dem piface board an.

    Ist alles nach Anleitung installiert aber mit den cat Befehl zeigt es immer Zustand 1 an , egal ob einer der Taster gedrueckt ist oder nicht. Habe gpios 0-4 getestet, immer nur Zustand 1.

    Selbe gilt fuer die 8 LED s auf dem board, mit welchen gpios out werden diesen angesprochen??

    Gruss
    gwaag

  • Moin,

    Du wirst es nicht für möglich halten, aber selbst bei diesem, Deinem Problem, weiss google Rat:
    einfach mal "piface datasheet" als Suchbegriff eingeben (so wie -> hier <-) und abrakadabra erhältst Du unter anderem -> dieses <- oder auch -> dieses <- Ergebnis ...

    Oder was war Dein Begehr :fies:


    cu,
    -ds-

  • Vielen Dank fuer die links, die habe ich alle schon mal gelesen, werde aber nicht schlau.

    Ich moechte einfach nur wissen welcher gpio dem Taster s1 zugeordnet ist.
    Damit ich mit dem cat Befehl auslesen kann ob der Schwitch gedrueck
    ist oder nicht.

    Bis jetzt habe ich gpio0-4 aktiviert und die sind auch alle vorhanden in sys/class/gpio

    Wenn ich dann aber den Taster druecke steht mit dem cat Befehl immer nur eine 1 drin, d.h
    er schaltet nicht.


    Muss man hardwaremaessig noch eine Draht anschliessen damit der Taser S1 funktioniert??

    Gruss
    gwaag

  • Hallo,
    danke fuer dieTipps. Bin ein wenig weiter, konnte mit python Schalter S1 testen (funktioniert)
    und einige examples laufen lassen.
    Ich moechte aber dieses laufen lassen, wenn ich Taster S1 druecke:
    #!/bin/sh

    wert=$(cat /sys/class/gpio/gpio1/value);
    while true; do

    if [ $wert = 1 ]; then
    ps -C ein &>/dev/null || ./ein
    fi
    sleep 1

    done

    Wie muss ich nun im obigen code den Taster S1 einbinden das ./ein startet???
    Zusaetzlich moechte ich auch noch dass wenn ich Taser S1 druecke die LED 1 angeht und wenn ich los lasse die LED wieder aus geht.


    Gruss
    gwaag

  • Fortschritte gemacht........ jetzt halt mit python...........

    #!usr/bin/python

    from time import sleep
    import pifacedigitalio as p
    p.init()
    if p.digital_read(3):
    while(True):
    p.digital_write(7,1) #turn on
    sleep(1)
    p.digital_write(7,0) #turn off
    sleep(1)

    Mit diesem command:
    pi@raspberrypi /bin $ python test.py
    macht obiges folgendes: waehrend ich den Taster S4 druecke und in der command line enter druecke, faengt led 8 an zu blinken. Mit control C stoppt es zu blinken.


    Wer kann mir jetzt erklaeren wie ich nur mit dem Taster druecken, die LED 8 zum blinken bringe??? bzw. das programm starte??

    Gruss
    gwaag

  • Moin dbv,

    ich denke, er möchte das Drücken der ENTER-Taste weg haben. Da dürfte der read(3) das Problem sein. Nach C-Manier müsste da so was wie:

    if( (num = peek_char()) > 0 ) {
    read(num);
    ...
    }

    gwaag: das sollte aber in dem Tut drin stehen. Mich würde es wundern, wenn Du der einizge mit dieser Anforderung bist.
    Alternativ wäre auch eine Interrupt-Routine denkbar. Das wäre zumindest wesentlich resourcen-schonender.


    bye,
    -ds-

    • Offizieller Beitrag

    Hi -ds-,

    das seltsame ist, dass er eigentlich kein Enterzeichen erwarten sollte :denker:

    Code
    import pifacedigitalio
    import time
    pfd = pifacedigitalio.PiFaceDigital() # creates a PiFace Digtal object
    While True:
    	if pfd.input_pins[3].value > 0:
    		for x in range(9):
    			pfd.leds[7].toggle()
                            time.sleep(1)


    sollte beim drücken des Tasters die LED 10x Ihren Zustand wechseln lassen (allgemein als blinken bekannt). War ja schon richtig anstrengend die Doku zu dem Teil zu finden.

    • Offizieller Beitrag

    Lt. Doku returned digital_read() entweder 1 oder 0, deswegen verwirrt es mich das man da was Drücken muss, in der interaktiven Console passiert das auch nicht:

    Code
    >>> p.digital_read(4)        # reads pin4 (on board0)
    0

    Ein sehr seltsames Gerät dieses PiFace

  • Hallo,
    habe obiges script noch ein wenig angepasst, das läuft jetzt so:

    Programm heisst test1.py

    #!usr/bin/python

    import pifacedigitalio
    from time import sleep
    pfd = pifacedigitalio.PiFaceDigital() # creates a PiFace Digtal object
    while(True):
    if pfd.input_pins[3].value > 0:
    for x in range(20):
    pfd.leds[7].toggle()
    pfd.leds[6].toggle()
    pfd.leds[5].toggle()
    pfd.leds[4].toggle()
    pfd.leds[3].toggle()
    pfd.leds[2].toggle()
    pfd.leds[1].toggle()
    pfd.leds[0].toggle()
    sleep(0.1)
    Funktion: wenn Taster S4 gedrueckt wird, wird input_pin 3 auf 1 gesetzt.
    Dann blinken alle 8 LED 20x ( 10x ein 10x aus) und das im 100ms tackt.
    Mit LED 1 und 0 gehen zusaetzlich noch die 2 relais an und aus.

    Problem ist aber immer noch dass ich zuerst "python taster1.py" in die comando zeile schreiben muss und enter drücken muss. Curser geht dann ein Zeile nach unten und bleibt da.
    Erst jetzt, wenn ich Taster S4 druecke gehen die 8 led an und blicken so wie gewollt.

    Was ist im code falsch?? Ich moecht nicht jedes mal in der comando zeile etwas machen
    sondern ohne PC, einfach Taste S4 druecken und dann blinken die 8 led` s.
    Solange der curser in der unteren Zeile verharrt, kann ich belibige male S4 druecken und die LEDs blinken immer wie gewollt 20x.
    Abstellen muss ich dann mit control C.

    Gruss
    gwaag

  • Hallo,
    habe jetz in rc.local
    /bin/test1.py eingetragen. Jetzt kann ich ohne PC, einfach zu jeder Zeit den S4 Taster druecken und es funktioniert.

    Ist das die korrekte Loesung??????

    Habe gerade gesehen das mit Top die Auslastung von test1.py 80% ist, kann nach nicht sein fuers nicht tun................

    Gruss
    gwaag

    Einmal editiert, zuletzt von gwaag (11. April 2014 um 19:44)

Jetzt mitmachen!

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