Brauche einen Art-Net Spezialisten der mir hilft ;)

OP #2055513
Lesenswert?

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
(Firma: TravelRec.) Persönliche Seite #2055565
Lesenswert?

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
Lesenswert?

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
Lesenswert?

@  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

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