- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 62

Thema: Drei Led´s mit einem Taster unabhängig von einander schalten

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #34
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Tasten wir uns mal ran. Ich hab immer noch nicht verstanden, was im Datail unbefriedigend ist und hab einfach mal was gemacht. Kennst das, was von Planung über Entwicklung, Fabrikation, Lieferung und Montage am Ende übrig bleibt ?

    Nicht getestet aber sollte so sein:
    Auswahl Szenario wie gehabt.
    Am Ende der Auswahl bei Taster loslassen werden die Relais(Leds) nicht abgeschaltet, aktuelles Szenario bleibt an.
    Mit folgendem kurzem Tastendruck wird dann abgeschaltet.
    Mit weiterem kurzen Tastendruck wird vorhergehendes Szenario wieder eingeschaltet.

    Hab noch ein Case für den kuzen Tastendruck eingefügt und das Abschalten der LedX am Ende rausgenommen. - Dieses Case wieder entfallen nach Update. Kurzer Tastendruck wird am Ende abgefragt.

    PS. Ohhh schon Fehler entdeckt - Update kommt später
    Update gemacht

    Code:
    '###################################
    '### Bascom Demoversion V2.0.7.5 ###
    '###################################
    $regfile = "m168def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 34
    $crystal = 16000000
    
    Dim Hundertstelsekunden As Word         'enthält Tastendrucklänge in Hundertstel Sekunden
    
    Dim Ledspeicher As Byte                 'Speichert Zustand der LEDs in einzelnen Bits
    Const Led_1 = 0                         'Zum Adressieren der Bits in Ledspeicher
    Const Led_2 = 1                         'Zum Adressieren der Bits in Ledspeicher
    Const Led_3 = 2                         'Zum Adressieren der Bits in Ledspeicher
    
    Portd.4 = 1                             'Pullup an PD4 einschalten
    Taster Alias Pind.4                     'Taster an PD4
    
    Led1 Alias Portc.0                      'Anschluß für LED1 ?
    Led2 Alias Portc.1                      'Anschluß für LED2 ?
    Led3 Alias Portb.3                      'Anschluß für LED3 ?
    Config Led1 = Output
    Config Led2 = Output
    Config Led3 = Output
    
    Do                                      'Hauptschleife
      Debounce Taster , 0 , Taste_gedrueckt , Sub       'Wenn Tasteranschluß auf 0 (low) -> Subroutine Taste_gedrueckt
                                                        'Debounce hat bei Aktivität auf dem PIN ca. 25ms Verzögerung
    Loop                                    'Ende Hauptschleife
    
    Taste_gedrueckt:                        'Unterprogram wird angesprungen, wenn Taste gedrückt wurde
      Hundertstelsekunden = 0               'initialisieren für Zeitmessung
      While Taster = 0                      'Solange Taster gedrückt ist...
        Waitms 10                           '0,01s Zeitmeßschritte
        Incr Hundertstelsekunden            'alle 10ms erhöhen
        Select Case Hundertstelsekunden     'Hundertstelsekunden enthält Länge des Tastendruckes in Hundertstelsekunden
          Case 20 To 69 : Ledspeicher = Bits(led_1)       'Taste zwischen 200ms  und <700ms gedrückt
          Case 70 To 119 : Ledspeicher = Bits(led_2)       'Taste zwischen 700ms  und <1200ms gedrückt
          Case 120 To 169 : Ledspeicher = Bits(led_3)
          Case 170 To 219 : Ledspeicher = Bits(led_1 , Led_2)
          Case 220 To 269 : Ledspeicher = Bits(led_1 , Led_3)
          Case 270 To 319 : Ledspeicher = Bits(led_2 , Led_3)
          Case 320 To 369 : Ledspeicher = Bits(led_1 , Led_2 , Led_3)
          Case 370 : Hundertstelsekunden = 19       'Taste 3,7s und länger gedrückt-> Auswahl Lichtszenario beginnt neu
        End Select
         if Hundertstelsekunden >= 20 then          'wenn Selektion, dann Leds entsprechend einschalten
          Led1 = Ledspeicher.Led_1
          Led2 = Ledspeicher.Led_2
          Led3 = Ledspeicher.Led_3
        end if
      Wend
      if Hundertstelsekunden < 20 then         'wenn Taste nur kurz gedrückt wurde ...
        If Led1 = 1 or Led2 = 1 or Led3 = 1 then      'und irgendeine Led eingeschaltet ist
            Led1 = 0                                   'dann alle ausschalten
            Led2 = 0         
            Led3 = 0
          else                                      'oder gespeichertes Szenario einschalten.
            Led1 = Ledspeicher.Led_1
            Led2 = Ledspeicher.Led_2
            Led3 = Ledspeicher.Led_3
        end if
      end if
    Return                                  'zurück zur Hauptschleife
    
    End                                     'end program
    Geändert von Searcher (28.03.2013 um 13:39 Uhr) Grund: Programm berichtigt, hoffentlich
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Ähnliche Themen

  1. Roboter mit einem Taster an und aus schalten!?
    Von Bammel im Forum Elektronik
    Antworten: 56
    Letzter Beitrag: 10.02.2010, 18:53
  2. Antworten: 11
    Letzter Beitrag: 31.01.2010, 16:25
  3. Einfach nur mit Taster eine LED ein und aus schalten ?
    Von Ferdinand im Forum Assembler-Programmierung
    Antworten: 2
    Letzter Beitrag: 13.06.2008, 09:08
  4. LED mit Taster ein/aus schalten
    Von sampe im Forum Elektronik
    Antworten: 8
    Letzter Beitrag: 16.09.2006, 10:55
  5. Problem mit LED´s an Output Matrix und einem Taster
    Von MrQu im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 16.10.2005, 18:13

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests