www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Brauche einen Art-Net Spezialisten der mir hilft ;)


Autor: Chris Höchner (themasterchris)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Chris Höchner (themasterchris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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? :)

Autor: henne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DVI.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ArtNet definiert doch schon Datenrahmen für Matrixdisplays, werte die 
doch direkt aus, ohne das Ganze noch durch DMX zu quetschen.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Chris Höchner (themasterchris)
Datum:

Bewertung
0 lesenswert
nicht 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.

// DMX transmission
ISR (USART_TXC_vect) {
 static unsigned char  dmxState = BREAK;
 static unsigned short curDmxCh = 0;

 if (dmxState == STOPPED) {
  if (artnet_dmxTransmitting == TRUE) {
   dmxState = BREAK;
  }
 } else if (dmxState == BREAK) {
  UBRR = (F_CPU / (50000 * 16L) - 1);
  UDR      = 0;                //send break
  dmxState = STARTB;
 } else if (dmxState == STARTB) {
  UBRR = (F_CPU / (250000 * 16L) - 1);
  UDR      = 0;                //send start byte
  dmxState = DATA;
  curDmxCh = 0;
 } else {
  _delay_us(IBG);
  UDR      = artnet_dmxUniverse[curDmxCh++];      //send data
  if (curDmxCh == artnet_dmxChannels) {
   if (artnet_dmxTransmitting == TRUE) {
    dmxState = BREAK;             //new break if all ch sent
   } else {
    dmxState = STOPPED;
   } 
  }
 }
}

// ----------------------------------------------------------------------------
// DMX reception
ISR (USART_RXC_vect) {
 static unsigned char  dmxState = 0;
 static unsigned short dmxFrame = 0;
 unsigned char status = UCSRA;   // status register must be read prior to UDR (because of 2 byte fifo buffer)
 unsigned char byte = UDR;     // immediately catch data from i/o register to enable reception of the next byte

 if ((byte == 0) && (status & (1<<FE))) {        // BREAK detected (Framing Error)
  dmxState = 1;
  dmxFrame = 0;
  if (artnet_dmxChannels > 0) {
   artnet_dmxInComplete = TRUE;
  }
 } else if (dmxFrame == 0) {              // Start code test
  if ((byte == 0) && (dmxState == 1)) {          // valid SC detected
   dmxState = 2;
  }
  dmxFrame = 1;
 } else {
  if ((dmxState == 2) && (dmxFrame <= MAX_CHANNELS)) {  // addressed to us
   if (artnet_dmxUniverse[dmxFrame - 1] != byte) {
    artnet_dmxUniverse[dmxFrame - 1] = byte;
  artnet_dmxInChanged = TRUE;
   }
   if (dmxFrame > artnet_dmxChannels) {
    artnet_dmxChannels = dmxFrame;
   }
  }
  dmxFrame++;
 }
}

#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 ;)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.