- fchao-Sinus-Wechselrichter AliExpress         
Seite 6 von 7 ErsteErste ... 4567 LetzteLetzte
Ergebnis 51 bis 60 von 62

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

  1. #51
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Kein Problem. Aber was funktioniert mit dem letzten Code von mir nicht. Ich überlege ja schon an einer Lösung, kann aber nur vermuten, daß Du mit dem kurzen Tastendruck das vorher angewählte Szenario nicht einschalten kannst?

    Ist das so

    Nur sagen, was Du brauchst - hab heute ein bißchen Zeit. SONDERANGEBOT

    Guß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  2. #52
    Benutzer Stammmitglied Avatar von p@ty
    Registriert seit
    05.06.2011
    Ort
    Bottrop
    Beiträge
    51
    Sonderangebot??? Da muss ich zu greifen!!!

    Mit Led´s funktioniert Dein Code Klasse! Aber mit selbshaltenden Eltakos klappts dann natürlich nicht.

    Okay, ich versuche es nochmal in Worte zu fassen....^^

    Option 1 Relais!

    Hierbei sollte die Szenarienauswahl ja passen da die Relais ja abfallen wenn keine Spannung anliegt.
    Da sie ja nicht über Selbsthaltung verfügen muss das der Druck auf den Taster bewerkstelligen.
    Halt Taster drücken = Led1 usw High! Nochmal drücken Led´s low! usw...

    Option 2 Eltakos!
    Hier würde der Code soweit abgeändert werden müssen, daß die Led´s bzw Eltakos einen zusätzlichen Impuls bekommen um vorm Szenarienwechsel wieder low zu sein. Da ja sonst die Eltakos aufgrund ihrer Selbshaltung die ganze Zeit über High wären. Man müsste sie abfragen welchen Zustand sie haben und diese Information wieder zum µC führen. Leider ist Hardwareseitig absolut kein Platz zur verfügung.

    Also dann doch Option 1 mit "Normalen" Relais! ^^
    Danke für Deine Hilfe Searcher!

    Viele Grüße,
    p@

  3. #53
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    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

  4. #54
    Benutzer Stammmitglied Avatar von p@ty
    Registriert seit
    05.06.2011
    Ort
    Bottrop
    Beiträge
    51
    Jepp, das womit sich der Kunde zufrieden geben muss
    aber nichts mehr mit dem eigentlich angenommenen Auftrag zu tun hat! ^^

    Mein Gott bist Du schnell!!! Ja, genau so sollte es sein!
    Kann Deinen Code aber erst heute Abend testen! Hab´ erst gegen 17h Feierabend! Aber dann ist langes Osterwochenende und das hast Du mir gerade um 100% verbessert!

    Bin schon sehr gespannt!

    Viele Grüße!
    p@

  5. #55
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Zitat Zitat von p@ty Beitrag anzeigen
    Mein Gott bist Du schnell!!! Ja, genau so sollte es sein!
    Kann Deinen Code aber erst heute Abend testen!Bin schon sehr gespannt!
    Na ja, schnell ist nicht gut Jetzt sollte es passen. Hab den Code von heute morgen ausgetauscht und bin nun auch gespannt.

    Ist immer noch vermutlich eine kleine Macke drin - soll erstmal zum Testen sein und ob die grobe Funktion so richtig ist.
    Geändert von Searcher (28.03.2013 um 12:49 Uhr)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  6. #56
    Benutzer Stammmitglied Avatar von p@ty
    Registriert seit
    05.06.2011
    Ort
    Bottrop
    Beiträge
    51
    Na, geht ja jetzt für mich rapide auf´n Feierabend zu! ^^ Seh´ schon die Led am USB Progger blinken!!!

  7. #57
    Benutzer Stammmitglied Avatar von p@ty
    Registriert seit
    05.06.2011
    Ort
    Bottrop
    Beiträge
    51
    Heyho!

    @ Searcher:
    Absolute Klasse!!!
    Klappt einwand frei!!!!!

    Ich Danke Dir für diesen tollen Code und die Mühe die Du investiert hast!!

    Jetzt muss ich mich erst einmal damit auseinander setzen und versuchen den zu verstehen / nach zu vollziehen!
    THX!!!!

    Viele Grüße,
    p@

  8. #58
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Noch 'ne kleine Hilfe obendrauf. Nur noch Fragen hierzu oder zu Programmänderungen notwendig, Dank habe ich schon genug bekommen und sollte erstmal reichen .

    Code:
    Deklarieren und Initialisieren
    
    In Hauptschleife nur auf Tastendruck warten
      Mit DEBOUNCE Tastendruck erkennen, entprellen und Aufruf von "Taste_gedrueckt" Unterprogramm
    Ende Hauptschleife
    
    Taste_gedrueckt:
      Programmzeilen zwischen WHILE und WEND wird solange durchlaufen wie die Taste gedrückt ist (wg While Taster = 0)
      Die Schleife wird alle 10ms Durchlaufen (wg waitms 10)
      Die Tastendruckzeit kann der Variablen "Hundertstelsekunden" in 10ms Schritten entommen werden. Wert von 10 entspricht 100ms
      In der Case Anweisung wird die Tastendruckzeit während des Drucks ständig ausgewertet und je nach Länge der Ledspeicher mit dem Szenario belegt.
      Für Tastendruck kürzer als 200ms ist kein Case vorgesehen, ist ja kein Szenarioauswahl
      Case 370: Zu langer Druck -> kein neues Szenario verfügbar -> Zurücksetzten Hundertstelsekunden -> Vorgaukeln eines kürzeren Druckes und Szenarioauswahl beginnt von vorne.
      Vor dem WEND werden dann die LEDs während des Szenarioauswahldruckes eingeschaltet, aber nur wenn kein kurzer Tastendruck vorliegt, der ja hier noch möglich sein kann, da die Zeitmessung noch nicht zu Ende ist.
      
      Taste wurde gelöst -> Programmzeilen nach WEND werden durchlaufen
      Wenn mit langem Tastendruck eine Szenarioauswahl stattgefunden hat, wurden die LEDs ja schon entsprechend geschaltet
      Also wird mit der ersten If Abfrage nur bei kurzem Tastendruck eine Aktion ausgeführt.
      Die gleich folgende If Abfrage dient dazu festzustellen, ob ein- oder ausgeschaltet werden muß
        Wenn also irgendeine LED (wg LED1 = 1 or LED2 = 1 or ... ) an ist, wird ausgeschaltet, sonst das Szenario eingeschaltet.
    Fertig und Rücksprung in die Hauptscheife
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  9. #59
    Benutzer Stammmitglied Avatar von p@ty
    Registriert seit
    05.06.2011
    Ort
    Bottrop
    Beiträge
    51
    Ehre wem Ehre gebührt!
    Nein echt, ganz klasse und super Hilfe!!

    Probiere auch schon die ganze Zeit damit rum!
    Klicke auf die Grafik für eine größere Ansicht

Name:	pic1.jpg
Hits:	30
Größe:	83,3 KB
ID:	24979

    Viele Grüße,
    p@

  10. #60
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Die drei LEDs auf dem Bild sagen mir was aber wozu die Motore??? Die Flurbeleuchtung kann man natürlich auch über eine Schalterkonstruktion, die über die Nockenwelle betätigt wird, schalten? Da kommen mir die Stromstoßrelais aber schon einfacher vor Nicht für ungut.
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Seite 6 von 7 ErsteErste ... 4567 LetzteLetzte

Ä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
  •  

12V Akku bauen