Scroll-Menü

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo Forum, ich möchte mir ein Scroll-Menü basteln. Also man blättert mit einem Taster durch das Menü, mit einem 2. Taster wird der Punkt dann ausgeführt... Aber soweit bin ich noch nicht. Hier mal mein Entwurf:


    Ich benutze einen Counter zum Blättern. Nun soll nach "3" aber wieder "1" kommen. Was muss ich da einfügen? return, exit habe ich versucht...
    Ich brauche nur einen kleinen Denkanstoss, Danke schon mal...
    EDIT: Habe es gefunden, einfach nach Counter == 3 , Counter = 0.
    Thema kann ja für weitere Fragen/Anregungen stehen bleiben.

    Einmal editiert, zuletzt von modulok (18. Januar 2015 um 21:47)

  • Okay, zwar schon gelöst, aber es gibt da noch einen anderen Weg.

    Code
    a = (a + 1) % 3

    ergibt eine Zahlenfolge von:

    Code
    0, 1, 2, 0, 1, 2, .....

    Grade bei Menüs kann das oft nützlich sein.
    Viel Erfolg :thumbs1:

    ...and write down with pencil&paper...
    Where can i download "pencil&paper" ?

  • Vielleicht kann mir jemand helfen...Für mein Menü ist es nötig, das Script zu verlassen und in ein anderes zu wechseln. Ist das möglich? Ein zweiter Taster wird z.B. betätigt, um das Script zu beenden und ein neues zu starten. So könnte ich in einem neuen Script den oder die Taster neu verwenden. Oder empfiehlt sich diese Methode gar nicht?

  • Hier ist mein Script bisher:



    Wie kann ich die Taster umdefinieren?

    Einmal editiert, zuletzt von modulok (19. Januar 2015 um 20:35)

  • Habe es mal einfacher formuliert, was ich möchte:

    Bitte gebt mir wenigstens einen Anhaltspunkt, wie ich das lösen kann...Taster 2 müsste wie ein Schalter programmiert werden? Wenn ich nur ein Beispiel mal hätte.:wallbash:

  • Wenn ich das bisher richtig einschätze, sind das hier Deine ersten Gehversuche, oder?
    Macht nix, dafür ist ein Forum ja da.

    Ist jetzt nur runtergeschrieben und nicht getestet. Ich denke aber das ist in etwa das was Du suchst.
    Viel Erfolg :thumbs1:

    /edit: paar Comments eingefügt

    ...and write down with pencil&paper...
    Where can i download "pencil&paper" ?

    Einmal editiert, zuletzt von LieberScholli (19. Januar 2015 um 21:33)

  • Den Codeschnipsel verstehe ich zum größten Teil. Aber er funktioniert bei mir nicht ganz. Begreife wohl die def Funktion nicht so richtig

    Den def Teil bekomme ich nicht zum laufen.

    Einmal editiert, zuletzt von modulok (19. Januar 2015 um 22:33)

  • Hmm, mit def: wird ein Unterprogramm definiert.
    Am besten probiert man alle Funktionen mal einzeln aus, um den Ablauf etwas genauer zu verstehen.

    Code
    def unterprogramm(variable):  # unterprogramm definieren
        print variable
        return
    
    
    for a in range(5):
        unterprogramm(a)  # unterprogramm mit der variable "a" starten

    Welches Wort eingesetzt wird ist eigentlich volkommen schnuppe, solange das keine Systemrelevanten Wörter enthält.
    Also "unterprogramm" oder "starter" oder was auch immer für Dich am einfachsten zu lesen und zu verstehen ist.
    Python wird für dieses Wort einen eigenen Code verwenden, so dass es egal für die Geschwindigkeit ist, wie lang das Wort ist.

    Btw: ich schreibe immer gerne so, das die Taster innerhalb einer Schleife nur einmal abgefragt und in eine Variable geschrieben werden.
    So arbeitet man innerhalb der Schleife immer mit der gleichen Eingabe.
    Fragt man dagegen immer den Taster direkt ab, kann sich der Zustand ja schnell ändern und zu unvorhergesehenen Ergebnissen führen.
    Deswegen das "taster1 = GPIO.input(4) ; taster2 = GPIO.input(17)".

    /edit: Was läuft denn da nicht, bzw. welche Fehlermeldung kommt?

    ...and write down with pencil&paper...
    Where can i download "pencil&paper" ?

    Einmal editiert, zuletzt von LieberScholli (19. Januar 2015 um 22:44)

  • Jo, habe ich gesehen,ups. Ich bekomme den Counter erst mal nur auf diese Weise zum laufen:


    Das nach # funktioniert noch nicht.muss ich noch suchen...

    Einmal editiert, zuletzt von modulok (19. Januar 2015 um 23:17)

  • Na, das kann ja nicht funktionieren, wenn Du zwei Methoden vermischst.
    Nehme doch bitte erstmal Abstand zu "GPIO.add_event_detect" und verwende nur meinen kompletten Code.

    Nach einer def: funktion sollte auch immer ein "return" stehen, damit das Programm wieder in seine Ursprungsroutine zurückkehrt.
    In Deinem Code gibt es nur ein "return", wenn der Counter == 3 ist.
    Mit den Globalen Variablen sollte man auch sparsam sein, da das oft unnötig ist und nicht dem "Style-Guide" entspricht.

    /edit: Achso, ich kenne jetzt die genauen Unterschiede nicht, aber ich arbeite mit Python2.7
    Außerdem nutze ich gerne

    Python
    from time import *


    um den Befehl "sleep(X)" und weitere Timefunktionen zu importieren.
    So spart man sich immer die längere Version "time.sleep(X)".

    ...and write down with pencil&paper...
    Where can i download "pencil&paper" ?

    Einmal editiert, zuletzt von LieberScholli (19. Januar 2015 um 23:32)

  • Hast du denn nur einen Taster für die Auswahl? Da sehe ich dann ein Problem mit dem "zur letzten Auswahl kommen" ... Also wenn du den Taster 1x betätigst kommt die 1.Auswahl, willst du aber die 3.Auswahl musst du erst durch alle anderen durch - ob das so gewollt ist?

  • Ja, ist OK so. Im Moment habe ich 2 Taster angeschlossen. Mit dem ersten wollte ich scrollen, mit dem zweiten ein "Untermenu" öffnen. In diesem "Untermenu" wiederum wollte ich mit dem ersten Taster eine Aktion starten. So ist der Plan. Wie finde ich raus, welches Python ich habe?
    EDIT:

    Code
    pi@raspberrypi ~ $ python -V
    Python 2.7.3

    Einmal editiert, zuletzt von modulok (20. Januar 2015 um 00:00)

Jetzt mitmachen!

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