Brauche einen Art-Net Spezialisten der mir hilft ;)

OP #2055513
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
OP #2055545
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? :)
(Firma: TravelRec.) Persönliche Seite #2055565
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.
OP #2062507
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 ;)
#2062558
@  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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.