watterott ;title =
Ergebnis 1 bis 6 von 6

Thema: WS2812B Zylonen Scanner

  1. #1
    Kabelträger Avatar von R2D2 Bastler
    Registriert seit
    05.11.2016
    Alter
    42
    Beiträge
    16

    WS2812B Zylonen Scanner

    Eine weitere Spielerei für die WS2812B LED Strips.
    Der Zylonenscanner stammt aus der alten Battlestar Galactica Serie.

    Die Breite des Leuchtauges, sowie die Anzahl der gedimmten LEDs rechts und links davon sind einstellbar. Desweiteren kann zwischen zwei Modes gewechselt werden.

    Modus 0:
    Die Lauflicht Richtung wird geändert, wenn das Leuchtauge am Ende des Strips angekommen ist. Der vorauseilenden gedimmte Bereich wird dabei "hinaus geschoben".

    Modus 1:
    Die Richtung des Lauflichts ändert sich bereits dann, wenn der gedimmte Bereich das Stripende erreicht.

    Gruß
    Robert

    Ein kurzes Testvideo




    Code:
    'Cylon Scanner WS2812-Leds
    'Bascom Version 2.0.7.9 Beta
    '$sim
    
    $regfile = "attiny85.dat"
    $crystal = 8000000
    
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    
    
    Const Num_leds = 30
    Config Rainbow = 1 , Rb0_len = Num_leds , Rb0_port = Portb , Rb0_pin = 2
    
    Rb_selectchannel 0
    
    Dim Farbe(3) As Byte
    Rot Alias Farbe(_base)
    Gruen Alias Farbe(_base + 1)
    Blau Alias Farbe(_base + 2)
    
    Dim Delta(3) As Byte
    
    Const Num_leds_1 = Num_leds - 1
    
    Dim V As Byte
    Dim X As Word
    Dim N As Integer
    Dim Eye_start As Byte
    Dim Eye_end As Byte
    Dim Direction As Bit
    
    Dim Dim_start As Integer
    Dim Dim_end As Integer
    Dim Dim_area As Integer
    
    Dim First_dim_led As Integer
    Dim Last_dim_led As Integer
    
    Dim Number_of_dimmed_leds As Byte
    Dim Div As Byte
    Dim Modus As Bit
    
    
    '=========== User Einstellungen ====================
    
    'Gewünschte Farbe einstellen
    Rot = 255
    Gruen = 0
    Blau = 0
    
    Const Eye_size = 1                                          'Breite des Auges (ohne gedimmte LEDs)
    Number_of_dimmed_leds = 6                                   'Anzahl LEDs, die vor und nach dem Eye gedimmt sind
    Modus = 0                                                   '0 = Bewegung bis zum Eye (gedimmte LEDs werden "rausgeschoben"), 1 = Bewegung bis zur 1. gedimmten LED
    Const Speed = 2500
    
    '=================================================  ==
    
    
    
    Div = Number_of_dimmed_leds + 1                             'Bei Number_of_dimmed_leds = 1 -> Teilung mindestens durch 2
    
    If Number_of_dimmed_leds > 0 Then                           'Teilung durch 0 verhindern
       Delta(1) = Rot / Div                                     'Trimmwerte für jede Farbe berechnen
       Delta(2) = Gruen / Div
       Delta(3) = Blau / Div
    End If
    
    Const Eye_size_1 = Eye_size - 1
    
    Eye_start = 0
    Direction = 0
    
    
    Do
    
    Eye_end = Eye_start + Eye_size_1
    
    First_dim_led = Eye_start - Number_of_dimmed_leds
    Last_dim_led = Eye_end + Number_of_dimmed_leds
    
    
    If X = Speed Then                                           'Lauflichtgeschwindigkeit: Alle x Durchläufe Lauflicht um eine Position weiter setzen
    
       Rb_clearcolors
    
       For N = First_dim_led To Last_dim_led                    'Alle LEDs einschalten (ab erster gedimmten LED, über Eye size, bis zur letzten gedimmten LED)
          If N => 0 And N < Num_leds Then
          Rb_setcolor N , Farbe()
          End If
       Next N
    
       '--------------------- Dimmen unterhalb des "Eyes" -----------------------
    
       Dim_start = Eye_start - Number_of_dimmed_leds            'am stärksten gedimmt
       Dim_end = Eye_start - 1                                  'am wenigsten gedimmt
    
       For V = 1 To Number_of_dimmed_leds
          Dim_area = Dim_start + V
          For N = Dim_start To Dim_area
             If N => 0 And N < Num_leds Then                    'nur wenn N im zulässigen Bereich (0-29) ist, werden die Farbspeicher beschrieben
                Rb_subcolor N , Delta()
             End If
          Next N
       Next V
       '------------------------------------------------------------------------
    
    
    
       '--------------------- Dimmen oberhalb des "Eyes" -----------------------
    
       Dim_start = Eye_end + Number_of_dimmed_leds              'am stärksten gedimmt
       Dim_end = Eye_end + 1                                    'am wenigsten gedimmt
    
       For V = 0 To Number_of_dimmed_leds
          Dim_area = Dim_end + V
          For N = Dim_area To Dim_start
             If N => 0 And N < Num_leds Then                    'nur wenn N im zulässigen Bereich (0-29) ist, werden die Farbspeicher beschrieben
                Rb_subcolor N , Delta()
             End If
          Next N
       Next V
       '------------------------------------------------------------------------
    
    
       Rb_send
    
    
       Select Case Modus:
          Case 0:
          If Eye_start = 0 Then Direction = 0
          If Eye_end = Num_leds_1 Then Direction = 1
          Case 1:
          If First_dim_led = 0 Then Direction = 0
          If Last_dim_led = Num_leds_1 Then Direction = 1
       End Select
    
       If Direction = 0 Then Incr Eye_start                     'hoch
       If Direction = 1 Then Decr Eye_start                     'runter
    
       X = 0
    End If
    
    Incr X
    
    
    Loop
    End

  2. #2
    Kabelträger
    Registriert seit
    02.11.2016
    Beiträge
    8
    Ist den heut schon Weihnachten

  3. #3
    tschoeatsch
    Gast
    Jetzt fehlen halt noch die Zylonen zum ausprobieren. Aber so, wie das ausschaut, geht der Scanner.

  4. #4
    Platinenputzer Avatar von peterfido
    Registriert seit
    05.11.2016
    Beiträge
    41
    Hallo,

    ich habe mich damals bei der Serie schon gefragt: Wenn der Zylone gerade nach links schaut (scannt), kann man ihn von rechts dann ungesehen umnieten?
    Gruß Peterfido
    _____________________________________________
    Wenn das Herz involviert ist, steht die Logik außen vor.

  5. #5
    tschoeatsch
    Gast
    Zitat Zitat von tschoeatsch Beitrag anzeigen
    Jetzt fehlen halt noch die Zylonen zum ausprobieren. Aber so, wie das ausschaut, geht der Scanner.
    Jetzt hab' ich mich wohl geouted, Den Scanner haben die Zylonen und scannen den Rest. Ich dachte, man findet die mit dem Scanner.

  6. #6
    mac5150
    Gast
    Ihr habt beide Recht.
    Den ersten mit der peterfido-Methode umnieten und danach mit seinem Scanner die anderen finden

Lesezeichen

Lesezeichen

Berechtigungen

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