Buzzer-LED erweitern

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Grüße,

    zu Anfang mein Code:

    Mit diesem simplen Code steuere ich gleichzeitig 5 LED über einen Taster an.

    Nun würde ich gerne das jede Lampe bei gedrückthalten des Tasters einzeln mit Verzögerung leuchten oder dass wenn man 1x auf den Buzzer drückt auch nur eine Lampe leuchtet und beim wiederholten Drücken die zweite anfängt zu leuchten bis zur letzten.

    Könnt ihr mir behiflich sein? Mit 'sleep' zwischen der Ansteuerung der LED'S hat es leider nicht funktioniert.

    Gruß

    EDIT:

    Wenn ich bei:

    In:

    Code
    try:  
        while True:  
            if wiringpi.digitalRead(5):     # If button on PIN 5 pressed  
                    wiringpi.digitalWrite(0, 1) # switch on LED. Sets port 0 to 1 (3V3, on)
            else:  
                    wiringpi.digitalWrite(0, 0) # switch off LED. Sets port 0 to 0 (0V, off)
            sleep(0.05)                      # delay 0.05s


    umbenne, dann leuchten trotzdem alle LED's wenn ich das Skript starte und den Buzzer drücke.

    Was ist der Fehler?

    Einmal editiert, zuletzt von AliceDeh (20. Mai 2015 um 14:17)

  • Hy,
    um eine Verzögerung zu ralisieren, brauchst du etwas mehr als einen sleep.
    Die eleganteste lösung ist es die Uhrzeit in eine Variable zu legen, und im nächsten Loop je nach vergangener Zeit (aktuelleUhrzeit-AbgelegteUhrzeit) die nächste LED anzumachen.
    Eine andere Lösung währe bei jedem Loop eine Variable um eins hoch zu zählen solange der taster gedrückt ist und dann die LEDs an zu schalten ,je nachdem wie hoch der Wert der Variablen ist.
    In beiden Fälen müsstest du dir Überlegen wie du die LEDs aus schalten willst. Einfach durch loslassen? dann kannst du einfach diesen else-zweig so lassen, und deine neue Variable zurücksetzen.

    Wenn weiterhin alle LEDs angehen, dann stimmt wohl irgend etwas in deiner Verkabelung nicht. Oder du schaltest sie noch woanders im Code der hier nicht zu sehen ist.

    Gruß Nylan

  • Nochmal mein Problem:

    Mit diesem Code:

    Funktioneren alle LED's auf Knopfdruck und gehen ordnungsgemäß wieder aus, aber wenn ich in der 'if-Schleife' die LE ausklammer, dann gehen trotzdem alle LED's auf Knopfdruck an.

    Bei diesem Code:

    Gehen nur die LED's die nicht ausgeklammert sind und sleep funktionert.

    Doch ich würde gerne realisieren, dass bei 1x Tastendruck 1. LED angeht und erst beim 2x Tastendruck die 2. LED angeht.

    Danke euch trotzdemfür die Antworten bisher.

  • Hy ich habs mal ein wenig umgeschrieben.
    Es sollte so funktionieren.
    Sicher bin ich mir aber nicht, hab noch nie Phyton geschrieben :D könnten halt ien paar Syntaxfehler drin sein.

    Ich hoffe mal es klappt ;)

    Gruß Nylan


  • Hy ich habs mal ein wenig umgeschrieben.
    Es sollte so funktionieren.
    Sicher bin ich mir aber nicht, hab noch nie Phyton geschrieben :D könnten halt ien paar Syntaxfehler drin sein.

    Ich hoffe mal es klappt ;)

    Gruß Nylan

    WoW Danke dir!!

    Doch leider erscheint ein Fehler auf den ich noch nie gestoßen bin.

    ' File "led_5_reihe_taster_two.py", line 3
    SyntaxError: Non-ASCII character '\xc3' in file led_5_reihe_taster_two.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
    '


  • Das könnte das ä im kommentar sein.
    mach mal alle umlaute raus.
    Kann es gerade nicht testen.
    Gruß Nylan

    Habe oben

    #!/usr/bin/Python
    #-*- coding: utf-8 -*-

    hinzugefügt, dann war es ok, aber es treten andere Fehler auf.

    File "led_5_reihe_taster_two.py", line 7
    for i = 0 to AnzahlPins-1: # schleife um alle auf einmal zu ändern
    ^
    SyntaxError: invalid syntax

    Ich danke dir für deinen Versuch, aber wenn du die Sprache nicht kennst, wird es schwer da was aufzustellen :)

  • Ja wie gesagt. Die Syntax kann ich net ganz. Aber es ging ja eher um die art. Musst halt jetzt noch die Syntax korrigieren. Wie eine for schleife geht findet man relativ schnell raus.

Jetzt mitmachen!

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