Lauflicht Riesenrad

Gast #7271013
Lesenswert?

Ingo L. schrieb:
> ja aber wie?

Indem man die Muster Designt und dann programmiert. Wenn du du wirklich 
gar keine Idee hast, wie man das machen könnte, dann hast du wohl noch 
nie programmiert. Lerne das erst mal, dann haben wir eine gemeinsame 
Basis, um Details diskutieren zu können. Such dir irgendein Anfänger 
Tutorial aus. Erst auf PC, später auf Mikrocontrollern.

Nicht jeder kann programmieren. Das ist wie bei Malern und Musikern, 
dafür braucht man ein Talent. Entweder man hat es, oder nicht. Aber um 
das heraus zu finden, muss man es versuchen und üben, üben, üben. Nach 6 
Monaten weißt du, ob du es kannst.

Man fängt natürlich klein an, typischerweise indem man eine einzelne LED 
blinken lässt. Von da an arbeitet man sich langsam schrittweise bis zum 
Ziel hoch.

Bzw auf dem PC fängt man damit an "Hallo Welt!" auf den Bildschirm zu 
schreiben.
Gast #7271052
Lesenswert?

Ingo L. schrieb:
> VID_20221023_173531889.mp4 (44 MB)

Ist das dein Ernst, damit den Speicherplatz des Forum zu vergeuden? Ich 
hätte es dir auch ohne Video geglaubt.

Wundern tut mich danach allerdings deine extrem offen gestellte Frage. 
Versuche es normal mit einer konkreten Frage, dann kommt auch eine 
konkrete Antwort.
OP #7271091
Lesenswert?

Steve van de Grens schrieb:

Die Frage steht bereits ganz oben. WIE steuert man das an?

Ich würde jetzt aus meinem Besispiel an jede LED eine RGB LED setzten. 
aber der Sprung zur Ansteuerung fehlt mir noch zur Umsetzung. Ich würde 
aus meinem einfachen Beispiel 96 Ports benötigen (dimmen will ich 
nicht)) weil ich ja 32 LED mit dem AT MEGA 32 einzeln ansteuer. Ich habe 
alle 4 Ports belegt. Da dacht ich mir ich frage mal die Profis ob die 
mir einen Tipp geben könnten.
#7271139
Lesenswert?

Ingo L. schrieb:
> Ich würde jetzt aus meinem Besispiel an jede LED eine RGB LED setzten.
> aber der Sprung zur Ansteuerung fehlt mir noch zur Umsetzung. Ich würde
> aus meinem einfachen Beispiel 96 Ports benötigen (dimmen will ich
> nicht)) weil ich ja 32 LED mit dem AT MEGA 32 einzeln ansteuer. Ich habe
> alle 4 Ports belegt. Da dacht ich mir ich frage mal die Profis ob die
> mir einen Tipp geben könnten.

Was....
Scheitert's schon am Wissen über die Ansteuerung einer Matrix?!
https://www.mikrocontroller.net/articles/LED-Matrix
#7275284
Lesenswert?

Moin,

OK, bei der LED-Ansteuerung selber kristallisieren sich ja langsam die 
Probleme raus - wie sieht denn bei der Eingabe der "Muster" aus?
Haste da schon eine zuendende Idee?
So per Karopapier, Bleistift und Kopfrechnen kann man zwar machen, wird 
aber doch bei zunehmender Anzahl von LEDs bzw. laengeren Mustern schnell 
ziemlich öde...

Gruss
WK
#7275286
Lesenswert?

Ingo L. schrieb:
> wie steuert man sowas an?

Bei solchen Bahnen mit einer SPS oder Hardware aus der 
Beleuchtungstechnik. Die Lichtanimationen sind wohl relativ fix 
einprogrammiert.

Wenn man selber etwas in kleineren Massstab basteln will, kann man 
adressierbare LED's nehmen (APA102, WS2812, etc.), diese über ein 
Interface an einen Rechner anschliessen (Interface mit TPM2 lässt sich 
sehr einfach implementieren) und dann mit einer Software ansteuern, 
welche die schönen Lichteffekte machen kann und die Daten mittels dem 
TPM2 Protokoll an das Interface ausgeben kann.

Beispielsweise:
Jinx! http://www.live-leds.de/
Glediator 
https://www.ledstyles.de/index.php?thread/18739-glediator-freeware-led-matrix-steuerung-software/
Beitrag #7277921 wurde von einem Moderator gelöscht.
#7278773
Lesenswert?

Ingo L. schrieb:
> ist das wirklich die aktuelle Version 2.0.7.9
Das ist in der Tat kurios. Die aktuelle Version ist 2.0.8.5
Da ich eine Lizenz habe, ist mir das nicht aufgefallen.

Aber:
https://bascomforum.de/lexicon/index.php?entry/87-rainbow-lib/

"Seit der Version 2.0.7.9 ist die Rainbow-Library in Gestalt der 
RainbowBSC.Lib, Bestandteil von BASCOM-AVR. Zur Implementierung der 
Rainbow-Funktionen in die BASCOM-Umgebung und um Namenskonflikte mit 
bestehenden BASCOM-Befehlen auch in Zukunft auszuschließen, wurde die 
RainbowBSC-Library entsprechend angepasst. Ferner ist es nach heutigem 
Stand nicht geplant, die ursprüngliche Lib weiter zu entwickeln. 
Eventuelle Korrekturen sind davon natürlich ausgeschlossen."
OP #7279732
Lesenswert?

so, habe jetzt die Version.

Das hier soll ja schon funktionieren. Bin mal gespannt.

$regfile = "m8adef.dat"                                     'Prozessor
$crystal = 3684000 
'Taktfrequenz
$hwstack = 40
$swstack = 16
$framesize = 32
Config Rainbow = 1 , Rb0_len = 2 , Rb0_port = Portb , Rb0_pin = 0
'                                                                ^ 
connected to pin 0
'                                              ^-------------- connected 
to portB
'                               ^-------------------------- 2 leds on 
stripe
'                 ^------------------------------------- 1 channel
Dim Color(3) as Byte
R alias Color(_base) : G alias Color(_base + 1) : B alias Color(_base + 
2)
Rb_selectchannel 0                                       ' Kanal wählen
Do
   R = 0 : G = 0 : B = 100                                  ' blau
   Rb_setcolor 0 , Color(1)                                ' die erste 
LED
   R = 50 : G = 50 : B = 0                                 ' gelb
   RB_SetColor 1 , color(1)   ' zweite LED
   Rb_send                                                 ' und raus 
senden
   Waitms 500
   R = 0 : G = 100 : B = 0                                  ' grün
   Rb_setcolor 0 , Color(1)                                 ' die erste 
LED
   R = 100 : G = 0 : B = 0                                  ' rot
   Rb_setcolor 1 , Color(1)                                 ' zweite LED
   Rb_send
   Waitms 500
Loop
OP #7299795
Lesenswert?

Moin,

so nachdem die BASCOM-Probleme gelöst sind scheint soweit alles zu 
funktionieren.
Den ersten Stripe an PORT D0 funktioniert.
Nun nehem ich einen zweiten an D1 dazu und bekomme eine Fehlermeldung. 
Ich probiere schon hin und her und bekomme sie nicht weg,

Error : 25    Line :   10    Variable already dimensioned [Variable 
already dimensioned]  , in File : C:\Users\ingo\Desktop\Eigene 
Dateien\5.   Technische Infos_Treiber\1.   AVR\30. AVR PROGRAMME\_B__ab 
2021\2 streifen.bas


Hier mal das Programm

 $regfile = "m8def.dat"                           'Prozessor
  $crystal = 8000000                              'Taktfrequenz
  $hwstack = 40
  $swstack = 16
  $framesize = 32
  Dim N As Byte

  Config Rainbow = 1 , Rd0_len = 8 , Rd0_port = Portd , Rd0_pin = 0
  Config Rainbow = 2 , Rd1_len = 8 , Rd1_port = Portd , Rd1_pin = 1



  Dim Color(3) As Byte
  R Alias Color(_base) : G Alias Color(_base + 1) : B Alias Color(_base 
+ 2)

  Rb_selectchannel 1                                 ' Kanal wählen

  Do


  R = 100 : G = 0 : B = 0                            ' blau
   Rb_setcolor 0 , Color(1)                          ' die erste LED

  R = 0 : G = 100 : B = 0                            ' gelb
   Rb_setcolor 1 , Color(1)                          ' zweite LED

  R = 0 : G = 0 : B = 100                            ' blau
   Rb_setcolor 2 , Color(1)


  R = 100 : G = 0 : B = 100                           ' blau
   Rb_setcolor 3 , Color(1)

  R = 0 : G = 100 : B = 100                           ' blau
   Rb_setcolor 4 , Color(1)



  R = 0 : G = 0 : B = 100                             ' blau
   Rb_setcolor 5 , Color(1)


  R = 100 : G = 0 : B = 100                           ' blau
   Rb_setcolor 6 , Color(1)

  R = 0 : G = 100 : B = 100                           ' blau
   Rb_setcolor 7 , Color(1)




  Rb_send                                             ' und raus senden



Rb_selectchannel 2                                   ' Kanal wählen



  R = 100 : G = 0 : B = 0                              ' blau
   Rb_setcolor 0 , Color(1)                            ' die erste LED

  R = 0 : G = 100 : B = 0                              ' gelb
   Rb_setcolor 1 , Color(1)                            ' zweite LED

  R = 0 : G = 0 : B = 100                              ' blau
   Rb_setcolor 2 , Color(1)


  R = 100 : G = 0 : B = 100                            ' blau
   Rb_setcolor 3 , Color(1)

  R = 0 : G = 100 : B = 100                            ' blau
   Rb_setcolor 4 , Color(1)



  R = 0 : G = 0 : B = 100                              ' blau
   Rb_setcolor 5 , Color(1)


  R = 100 : G = 0 : B = 100                            ' blau
   Rb_setcolor 6 , Color(1)

  R = 0 : G = 100 : B = 100                            ' blau
   Rb_setcolor 7 , Color(1)




  Rb_send                                              ' und raus senden



  For N = 1 To 8

      'Rb_shiftright 0 , 8

      Rb_rotateright 1 , 8
    Waitms 250
   Rb_send
  Next




   Loop
#7299806
Lesenswert?

Ingo L. schrieb:
> so nachdem die BASCOM-Probleme gelöst sind scheint soweit alles zu
> funktionieren.

Lies mal, was hier in dem Fenster steht.

"Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang"

> Den ersten Stripe an PORT D0 funktioniert.
> Nun nehem ich einen zweiten an D1 dazu und bekomme eine Fehlermeldung.
> Ich probiere schon hin und her und bekomme sie nicht weg,

Ja logisch. Man kann nicht ein und die selbe Variable zweimal 
definieren.

Wenn ich das richtig verstanden habe, muss man mehrere Pins (Rainbows, 
was für ein Käse) so definieren.
1
'#Rainbow0
2
Const Rainbow0_Len = 10
3
Const Rainbow0_Port = PORTB
4
Const Rainbow0_Pin = PB0
5

6
Const Rainbow1_Len = 10
7
Const Rainbow1_Port = PORTB
8
Const Rainbow1_Pin = PB1

Die Auswahl des "Rainbows", der aktuell beschrieben werden soll, erfolgt 
mit

Call Select_Rainbow(0)      'select Rainbow
Beitrag #7299809 wurde von einem Moderator gelöscht.
(Firma: Q3) #7299927
Lesenswert?

Das gibts auch 'ne Nummer kleiner, weil ja nicht jeder ein Riesenrad im 
garten hat, z.B. für das Fahrrad:

https://www.youtube.com/watch?v=eLMQzfYANAU

(nur ein Beispiel von Dutzenden)

Generell nennt sich die Idee "pov display", gibts auch für sog. 
"Propeller-Uhren" und diverse Werbedisplays, teilweise mit recht hoher 
Auflösung und 3D-Effekt:

https://www.youtube.com/watch?v=ul5MUpXruRs

Auch als Bausatz:

https://www.youtube.com/watch?v=dZqsDaDV1ZY
OP #7308575
Lesenswert?

Ich habe jetzt zwei Stripes am PORT D ,Pin 0 und Pin 1.

Diese sollen Rotieren. Das funktioniert aber nur mit eine Port. Nehme ich den zweiten mit dazu will das nicht mehr so recht.

$regfile = "m8def.dat" 'Prozessor $crystal = 8000000 'Taktfrequenz $hwstack = 40 $swstack = 16 $framesize = 32 Dim N As Byte

Config Rainbow = 1 , Rd0_len = 8 , Rd0_port = Portd , Rd0_pin = 0 , Rd1_len = 8 , Rd1_port = Portd , Rd1_pin = 1

Dim Color(3) As Byte R Alias Color(_base) : G Alias Color(_base + 1) : B Alias Color(_base + 2)

Rb_selectchannel 0 ' Kanal wählen

R = 100 : G = 0 : B = 0 Rb_setcolor 0 , Color(1)

R = 100 : G = 00 : B = 0 Rb_setcolor 1 , Color(1)

R = 100 : G = 0 : B = 0 Rb_setcolor 2 , Color(1)

R = 100 : G = 0 : B = 0 Rb_setcolor 3 , Color(1)

1
Rb_selectchannel 1                                      ' Kanal wählen

R = 00 : G = 0 : B = 50 Rb_setcolor 0 , Color(1)

R = 00 : G = 00 : B = 50 Rb_setcolor 1 , Color(1) '

R = 00 : G = 0 : B = 50 Rb_setcolor 2 , Color(1)

R = 00 : G = 0 : B = 50 ' Rb_setcolor 3 , Color(1)

Rb_send ' und raus senden

For N = 1 To 8

Rb_rotateright 0 , 8 Rb_rotateright 1 , 8

Waitms 250

1
Rb_send

Next

Gast #7308637
Lesenswert?

Teo D. schrieb:

Ingo L. schrieb:

Nehme ich den zweiten mit dazu will das nicht mehr so recht.

Ich liebe deine Fehlerbeschreibungen.... :D

Der kann's halt nicht besser. Wie zu erwarten von BASCOM-Usern.

Es dürfte schlicht ein Performance-Problem sein. Mit den Mitteln von BASCOM unlösbar.

Die einzige vielleicht mögliche Lösung wäre, nur einen WS28xx-Kanal zu verwenden. Aber selbst das ist fraglich, hängt halt davon ab, was der BASCOM-Code sonst noch so tut.

Der TO wird es wohl nicht gebacken bekommen. Der kann halt nix unterhalb von dem BASCOM-Abstraktionsniveau. Womit ihm schon der Weg zu einer zielführenden Fehlersuche versperrt ist...

Beitrag #7308642 wurde von einem Moderator gelöscht.
Beitrag #7308661 wurde von einem Moderator gelöscht.
Beitrag #7308662 wurde von einem Moderator gelöscht.
Beitrag #7308671 wurde von einem Moderator gelöscht.
Beitrag #7308675 wurde von einem Moderator gelöscht.
(Firma: BINE Automatentechnik ◔) #7308695
Lesenswert?

Ingo L. schrieb:

ändert leider nichts :-(

Hab grad meinen Kontroller, Programmer und 5 WS-Streifen mit 12V gekillt. Weiß jemand wofür das Display am Netzteil ist?? Typisch Bascom-User...

Hab nachbestellt, dauert etwas. Das Ganze hatte ich hier vor ca. 3 Monaten aufgebaut. Wollte nur kurz Deinen Code-Schnipsel flashen...

Gast #7308700
Lesenswert?

Martin B. schrieb:

Hab grad meinen Kontroller, Programmer und 5 WS-Streifen mit 12V gekillt. Weiß jemand wofür das Display am Netzteil ist?? Typisch Bascom-User...

Nö, das hat nun wieder mit BASCOM rein garnix zu tun. Solche Hardwarefehler sind vollkommen unabhängig von der verwendeten Programmiersprache.

OP #7308741
Lesenswert?

Martin B. schrieb:

Ingo L. schrieb:

ändert leider nichts :-(

Hab grad meinen Kontroller, Programmer und 5 WS-Streifen mit 12V gekillt. Weiß jemand wofür das Display am Netzteil ist?? Typisch Bascom-User...

Hab nachbestellt, dauert etwas. Das Ganze hatte ich hier vor ca. 3 Monaten aufgebaut. Wollte nur kurz Deinen Code-Schnipsel flashen...

Der Code funktioniert aber halt nur mit eine aktiven Stripe

(Firma: BINE Automatentechnik ◔) #7313622
Lesenswert?

Martin B. schrieb:

Hab nachbestellt, dauert etwas.

Teile da und getauscht...

Config Rainbow = 2

Rb_selectchannel 0 Rb_rotateright 0 , 8 Rb_send

Rb_selectchannel 1 Rb_rotateright 0 , 8 Rb_send

vor jedem Rotate den Channel aussuchen und danach senden. Die For/Next Schleife würde ich durch eine Do/Loop ersetzen. Quelltext nicht komplett. Einfach Deinen ersetzen

Gast #7359963
Lesenswert?

Ingo L. schrieb:

Gibt es so eine Library (ich nenne es mal so) wie die Rainbow auch für C++?

Falls du die Arduino Rainbow Library meinst: Arduino ist C++, insofern sollte eine Portierung auf Plattformen ohne Arduino relativ leicht machbar sein.

Ich habe mal umgekehrt eine C Bibliothek für ein Grafikdisplay nach Arduino portiert. Das war an einem halben Tag erledigt.

(Firma: Q3) #7361948
Lesenswert?

Um soft durch den Regenbogen zu faden, empfehle ich immer den Umweg über das HSV-Farbmodell.

Bei H (hue - Farbe im 360-Grad Fabkreis), S (saturation, "Sättgung" oder "Reinheit") und V (value, "Intensität"), kann man - im Gegensatz zum RGB-Misch-Farbmodell, eben Farbe, Sättigung und Intensität sauber von einander trennen.

Also man lässt z.B. den H-Wert gemütlich von 0...359 laufen und, siehe da, die Farben faden sauber von Rot nach Gelb, Grün, Cyan, Blau über Magenta wieder zu Rot ...

Natürlich brauchen die LEDs "am Ende" wieder RGB-Werte zum Ansteuern, dazu muss man nur vorher HSV nach RGB konvertieren. Aber das Erreichen einer bestimmten Farbe ist im HSV-Modell per Definition sehr einfach.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren