Hey Leute, bin auf der Suche nach einem Spezialisten für Art-Net und zwar gehts darum ich möchte mir ein LED Panel aufbauen und dieses mit Madrix steuern. Erste Überlegung war ein Panel zu bauen das DMX kann da gibts ja einige Varianten (wobei mir das auch alles noch nicht so gefällt) aber bei DMX ist halt bei 512 Kanälen Schluss somit für LED blöde. Nächste Überlegung Art-Net vor dem DMX dann wären ja 6 Universen möglich somit 4096 Kanäle. Guter Ansatz aber jetzt die Frage würde es nicht einfacher gehen einfach ein Art-Net zu nehmen und dort direkt Spalen und Zeilen für eine Matrix draus zu machen? Oder eben z.B einen MBI5030 oder einen TLC59116 dran zu hängen und direkt anzusteuern. Wäre das möglich? Kann mir da jemand helfen?? Wäre schon mal über jede Antwort sehr froh ;) Mfg Chris
Du kannst doch DMX-Kanäle beliebig verwenden. Nimm beispielsweise Kanal 1,2 und 3 für Adressen R,G,B und Kanal 4,5,6 für die Werte der einzelnen Farben. Damit kannst Du 256 RGB-LEDs ansprechen. Auf Kosten der Wiederholrate natürlich.
Sorry versteh ich grad irgendwie nicht. ;) Ich möchte mir eine Matrix mit 8x12 Pixeln aufbauen sprich das Panel hat 96 RGB LED's was ja wiederum 288 Kanäle sind aber ich möchte jede LED einzeln steuern und auch deren Farbe einzeln. Was wäre für mein ganzes Projekt die elegantes, beste und günstigste Lösung? :)
ArtNet definiert doch schon Datenrahmen für Matrixdisplays, werte die doch direkt aus, ohne das Ganze noch durch DMX zu quetschen.
Chris Höchner schrieb: > Sorry versteh ich grad irgendwie nicht. ;) Du verknüpperst nicht jeden Kristall jeder RGB-LED mit einem DMX-Kanal, sondern überträgst über bestimmte DMX-Kanäle Adressen und über andere Kanäle Werte für diese Adressen und kannst somit ein Vielfaches an physikalischen Adressen ansteuern. Das Ganze geht natürlich auf Kosten der Wiederholrate, weil ja nur etwa 50 komplette DMX-Frames pro Sekunde übertragen werden können.
Hmm ok hört sich ja alles sinnvoll an nur wie mach ich das genau? Habe hier mal den C Code rauskopiert der meiner Meinung nach für das umsetzen auf DMX zuständig ist.
1 | // DMX transmission
|
2 | ISR (USART_TXC_vect) { |
3 | static unsigned char dmxState = BREAK; |
4 | static unsigned short curDmxCh = 0; |
5 | |
6 | if (dmxState == STOPPED) { |
7 | if (artnet_dmxTransmitting == TRUE) { |
8 | dmxState = BREAK; |
9 | }
|
10 | } else if (dmxState == BREAK) { |
11 | UBRR = (F_CPU / (50000 * 16L) - 1); |
12 | UDR = 0; //send break |
13 | dmxState = STARTB; |
14 | } else if (dmxState == STARTB) { |
15 | UBRR = (F_CPU / (250000 * 16L) - 1); |
16 | UDR = 0; //send start byte |
17 | dmxState = DATA; |
18 | curDmxCh = 0; |
19 | } else { |
20 | _delay_us(IBG); |
21 | UDR = artnet_dmxUniverse[curDmxCh++]; //send data |
22 | if (curDmxCh == artnet_dmxChannels) { |
23 | if (artnet_dmxTransmitting == TRUE) { |
24 | dmxState = BREAK; //new break if all ch sent |
25 | } else { |
26 | dmxState = STOPPED; |
27 | }
|
28 | }
|
29 | }
|
30 | }
|
31 | |
32 | // ----------------------------------------------------------------------------
|
33 | // DMX reception
|
34 | ISR (USART_RXC_vect) { |
35 | static unsigned char dmxState = 0; |
36 | static unsigned short dmxFrame = 0; |
37 | unsigned char status = UCSRA; // status register must be read prior to UDR (because of 2 byte fifo buffer) |
38 | unsigned char byte = UDR; // immediately catch data from i/o register to enable reception of the next byte |
39 | |
40 | if ((byte == 0) && (status & (1<<FE))) { // BREAK detected (Framing Error) |
41 | dmxState = 1; |
42 | dmxFrame = 0; |
43 | if (artnet_dmxChannels > 0) { |
44 | artnet_dmxInComplete = TRUE; |
45 | }
|
46 | } else if (dmxFrame == 0) { // Start code test |
47 | if ((byte == 0) && (dmxState == 1)) { // valid SC detected |
48 | dmxState = 2; |
49 | }
|
50 | dmxFrame = 1; |
51 | } else { |
52 | if ((dmxState == 2) && (dmxFrame <= MAX_CHANNELS)) { // addressed to us |
53 | if (artnet_dmxUniverse[dmxFrame - 1] != byte) { |
54 | artnet_dmxUniverse[dmxFrame - 1] = byte; |
55 | artnet_dmxInChanged = TRUE; |
56 | }
|
57 | if (dmxFrame > artnet_dmxChannels) { |
58 | artnet_dmxChannels = dmxFrame; |
59 | }
|
60 | }
|
61 | dmxFrame++; |
62 | }
|
63 | }
|
64 | |
65 | #endif
|
aber wie pack ich das jetzt um, dass ich zum Beispiel gleich einen MBI5030 oder einen TLC59116 ansteuere? Sorry bin leider noch etwas unerfahren ;)
@ Chris Höchner (themasterchris) >Hmm ok hört sich ja alles sinnvoll an nur wie mach ich das genau? >Sorry bin leider noch etwas unerfahren ;) Dann wäre sinnvoll, erstmal kleinere Brötchen zu backen. Schau mal hier rein. Beitrag "LED-Matrix, 9x9 RGB, Voll dimmbar" Mit der Platine kann man eine 9x9 RGB-Matrix per DMX512 ansteuern. Zwei davon passen an einen DMX-Strang (Universe, welch anmßender Name ;-) Wenn deine Software 6 Universen ansteuern kann, macht das max. 12x9x9 Matritzen. Reicht für den Anfang. MFG Falk
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.