Go Down

Topic: Welcher arduino ist der Richtig für 300 WS2811 LEDs (Read 957 times) previous topic - next topic

cool18

Moin Leute,
So heute hat es der vermeintlich böse Händler geschafft mir ein Bisschen Spielzeug zu bringen. Um genau zu sein 2x5m LED Scipts mit 12 Volt und WS2811 das sind pro Scipt 150LEDs also Insgesamt 300 LEDs die Gesteuert werden möchten.
Ich möchte damit die Bühnenkante bekleben das sind exakt 10m. Die Scripts sollen Jinx! Angesteuert werden. Soll ein schöner Effekt Werden.

Ich bin in denn Thema relativ Neu ich mache er Sachen mit DMX geht bei der Anzahl der LEDs aber nicht.

Ich bin dann im lesen auf denn Arduino Uno gekommen.

Ich habe dazu aber noch ein paar fragen.
geht der Arduino hier
http://www.ebay.de/itm/ATMEGA16U2-Version-Uno-R3-MEGA328P-Board-mit-USB-Kabel-kompatibel-fur-Arduino-/291688508374

Schafft er es 300LEDs anzusteuern?
Könnte es da Probleme geben geben da es ein China Nachbau ist?

agmue

Die Scripts sollen Jinx! Angesteuert werden.
Kenne ich nicht :(

geht der Arduino hier
Ja (ich verwende einen Nano oder einen ProMini).

Schafft er es 300LEDs anzusteuern?
Ja, benötigt 900 Bytes RAM.

Könnte es da Probleme geben geben da es ein China Nachbau ist?
Ja.

Tommy56

JINX! ist ein PC-Ansteuerprogramm für LED-Matritzen.
Die minimale Spalten-/Zeilenzahl ist 4, d.h. es ist für einen langen Strip (Matrix mit 1 Zeile) nicht gedacht. In wieweit man es umbiegen kann, habe ich nicht geschaut, das ist aber auch nicht Inhalt dieses Forums.

Schau Dir lieber mal FastLed an, wenn Du einen Arduino verwenden willst.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

cool18

 Jinx ist eigentlich für eine Matrix gedacht das ist richtig. Im Forum von Jinx habe ich mich erkundigt es hieß kein Problem bei YT gibts auch ein paar Videos wo zu sehen ist das mann es machen kann. Sollt also kein Problem sein. Es wird dann halt nur 1 Zeile Angezeigt.
Ich habe mich bewusst für Jinx entschieden da ich es per Artnet ansprechen kann somit kann ich Jinx auch mit DMXControl Ansprechen. Da der Rest der Lichtanlage per DMX läuft und es mit DMXControl Gesteuert wird. Somit ist eine Fernsteuerung möglich ohne das ich mich auf noch ein Rechner Konzentrieren muss.

Die Frage war ja nur ob der Arduino denn ich oben verlinkt habe geht.

agmue

Mir fallen zwei möglicherweise kritische Punkte ein.

Das Protokoll für WS2811 dürfte dem mir besser bekannten von WS2812 vergleichbar sein. Dieses blockiert den Arduino, weshalb keine Daten von außen empfangen werden können. Der Datenstrom von Jinx muß daher im Handshake erfolgen, also unterbrechbar sein.

Desweiteren muß die für die Schnittstelle nötige Software in den Arduino passen.

Zu beiden Punkten kann ich keine Aussage machen, da ich Jinx nicht kenne.

Tommy56

So wie ich das sehe, gibt es keine JINX!-Implementation für Arduino.
Da hat er also noch viel Entwicklungsaufwand vor sich.

Deshalb hatte ich ja FastLed empfohlen.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

uwefed

Bist Du sicher daß das 12V Strips sind und jede LED einzeln ansprechbar ist und nicht in 3-er Gruppen??
Grüße Uwe

Addi2438

Gute Frage,
das Problem hab ich mit meinem Strip

Dachte so: "Ey cool voll viele LEDs pro Meter"
und dann kam die Erkenntniss: "Was fürn sch*** das sind 3er Cluster .........."
Baby Kiwi, what else? :D

cool18

So ich hätte vielleicht dazu schreiben sollen das Jinx mit denn firmware von glediator arbeitet das heißt eigentlich  muss ich nur die  glediator firmware runterladen und auf denn Arduino Packen. So mein Plan sah bei YouTube nicht so schwer aus.

Auf denn LED Streifen sind ICs drauf.


Die größte sorge macht mir der Arduino UNO ich hab bei Amazon ein gefunden der geanu die Selben technischen eigenschaften hat wie der Orginal. Die frage welchen soll ich kaufen?


Zun Thema FastLed
Sind dort Fertige Programme drinne?
Gibts eine Möglichkeit einer Ansteuerung über Artnet?
Wichtig es muss für denn Live Einsatz geeignet sein.

uwefed

Quote
Auf denn LED Streifen sind ICs drauf.
Das habe ich angenommen da Ws2811 16 polige SMD-ICs sind. Ist da 1 IC pro 3 LED?
Quote
So ich hätte vielleicht dazu schreiben sollen das Jinx mit denn firmware von glediator arbeitet das heißt eigentlich  muss ich nur die  glediator firmware runterladen und auf denn Arduino Packen.
Gib uns mal einen Link dazu dann können wir mal schauen.
Quote
Die größte sorge macht mir der Arduino UNO ich hab bei Amazon ein gefunden der geanu die Selben technischen eigenschaften hat wie der Orginal. Die frage welchen soll ich kaufen?
Dieses Forum wird mit dem Erlös des Verkaufs der orginal-Arduinos finanziert. Es müßte alle Arduinos bzw dessen Nachbauten mit ATmega328, ATmega 2560 und ATmega32U4 funktionieren. Entscheide Du.
Grüße Uwe

cool18

Hier sind einmal die Infos zu Glediator
http://www.solderlab.de/index.php/software/glediator
Und hier gehts zum Download
http://www.solderlab.de/index.php/downloads/category/4-glediator

Ein IC ist aller 3 LEDs

agmue

Hier sind einmal die Infos zu Glediator
Zitat:

Stripes & Matrices made of WS2811 / WS2812-Pixels (Neo-Pixel) [NEW]

Since LEDs with integrated PWM controller become more and more popular (and cheaper) many people were asking for steering these guys with Glediator. And here we go: We made a sketch for all kind of Arduino boards (UNO, Leonardo, Mini, Micro, Mega, etc.) that receives serial data and feeds stripes / matrices of WS2811/WS2812 pixels. You can download the sketch here.

The firmware can handle up to 512 pixels. It uses a fixed baud rate of 1000000 baud. Set color order to BRG within Glediator. It's highly recommended to put a resistor (100-200Ohm) into the data line. It's also no bad choice to add a 220µF capacitor to the power line of the stripe / matrix.


Der fertige Sketch für 300 Lichtpunkte kompiliert problemlos:

Quote
Der Sketch verwendet 730 Bytes (2%) des Programmspeicherplatzes. Das Maximum sind 32.256 Bytes.
Globale Variablen verwenden 914 Bytes (44%) des dynamischen Speichers, 1.134 Bytes für lokale Variablen verbleiben. Das Maximum sind 2.048 Bytes.
Ein IC ist aller 3 LEDs
Dann tippe ich mal auf drei zusammenhängende Lichtpunkte, also im Sketch #define NUMBER_OF_PIXELS   100

Die größte sorge macht mir der Arduino UNO ich hab bei Amazon ein gefunden der geanu die Selben technischen eigenschaften hat wie der Orginal. Die frage welchen soll ich kaufen?
Als Hobbybastler muß ich aufs Geld schauen und kaufe Nanos daher direkt in China. Aus Erfahrung weiß ich, daß damit ein gewisses Risiko verbunden ist, welches ich aber gelegentlich bereit bin, einzugehen.

Wenn sich jemand semiprofessionell oder professionell mit Bühnentechnik beschäftigt, halte ich das Sparen für eher nebensächlich. Kaufe Dir lieber einen Arduino UNO (davon wird dieses Forum bezahlt!) oder einen legalen Nachbau UNO (der darf dann nicht Arduino heißen!). Das Projekt ist ja quelloffen. Manche UNOs haben eine verbesserte Stromversorgung oder einen anderen USB-Stecker. Ich habe mit Funduino begonnen, deutsche Anleitung, Firma und Garantie.

Meine Empfehlung für Dich wäre der kleine Nano, da schön klein und mit dem selben Prozessor ATmega328 wie der UNO. Der Link verweist auf einen China-Clone mit deutscher Garantie. Oder eben als Arduino.

agmue

Hier noch der Sketch, wenn es jemanden interessiert:

Code: [Select]

//##############################################################################
//##############################################################################
//                                                                             #
// Glediator to WS2812 pixel converter                                         #
// by R. Heller                                                                #
// V 1.0 - 07.01.2014                                                          #           
// wwww.SolderLab.de                                                           #
//                                                                             #
// Receives serial data in Glediator protocol format @ 1 MBit/s                #
// and distributes it to a connectect chain of WS2812 pixels                   #
//                                                                             #
// Adjust the correct DATA PIN and the correct NUMBER OF PIXELS you are using  #
// in the definitions section below before uploading this sketch to your       #
// Arduino device.                                                             #
//                                                                             #
// Maxiumim number of supported pixeles is 512 !!!                             #
//                                                                             #
// In the Glediator software set output mode to "Glediator_Protocol",          #
// color order to "GRB" and baud rate to "1000000"                             #
//                                                                             #
//##############################################################################
//##############################################################################


//##############################################################################
//                                                                             #
// Definitions --> Make changes ONLY HERE                                      #
//                                                                             #
// To find out the correct port, ddr and pin name when you just know the       #
// Arduino's digital pin number just google for "Arduino pin mapping".         #
// In the present example digital Pin 6 is used which corresponds to "PORTD",  #
// "DDRD" and "6", respectively.                                               #
//                                                                             #
//##############################################################################

#define DATA_PORT          PORTD
#define DATA_DDR           DDRD
#define DATA_PIN           6
#define NUMBER_OF_PIXELS   300


//##############################################################################
//                                                                             #
// Variables                                                                   #
//                                                                             #
//##############################################################################

unsigned char display_buffer[NUMBER_OF_PIXELS * 3];
static unsigned char *ptr;
static unsigned int pos = 0;

volatile unsigned char go = 0;


//##############################################################################
//                                                                             #
// Setup                                                                       #
//                                                                             #
//##############################################################################

void setup()
{
  // Set data pin as output
  DATA_DDR |= (1 << DATA_PIN);
 
  // Initialize UART
  UCSR0A |= (1<<U2X0);                               
  UCSR0B |= (1<<RXEN0)  | (1<<TXEN0) | (1<<RXCIE0);   
  UCSR0C |= (1<<UCSZ01) | (1<<UCSZ00)             ;
  UBRR0H = 0;
  UBRR0L = 1; //Baud Rate 1 MBit (at F_CPU = 16MHz)
 
  ptr=display_buffer;
 
  //Enable global interrupts
  sei();
}


//##############################################################################
//                                                                             #
// Main loop                                                                   #
//                                                                             #
//##############################################################################

void loop()

  if (go==1)
  {
    cli();
    ws2812_sendarray(display_buffer, NUMBER_OF_PIXELS * 3);
    sei();
    go=0;
  }
}


//##############################################################################
//                                                                             #
// UART-Interrupt-Prozedur (called every time one byte is compeltely received) #
//                                                                             #
//##############################################################################

ISR(USART_RX_vect)
{
  unsigned char b;
  b=UDR0;
 
  if (b == 1)  {pos=0; ptr=display_buffer; return;}   
  if (pos == (NUMBER_OF_PIXELS*3)) {} else {*ptr=b; ptr++; pos++;} 
  if (pos == ((NUMBER_OF_PIXELS*3)-1)) {go=1;}
}


//##############################################################################
//                                                                             #
// WS2812 output routine                                                       #
// Extracted from a ligh weight WS2812 lib by Tim (cpldcpu@gmail.com)          #
// Found on wwww.microcontroller.net                                           #
// Requires F_CPU = 16MHz                                                      #
//                                                                             #
//##############################################################################

void ws2812_sendarray(uint8_t *data,uint16_t datlen)
{
  uint8_t curbyte,ctr,masklo;
  uint8_t maskhi = _BV(DATA_PIN);
  masklo =~ maskhi & DATA_PORT;
  maskhi |= DATA_PORT;

  while (datlen--)
  {
    curbyte = *data++;

    asm volatile
    (
      " ldi %0,8 \n\t" // 0
      "loop%=:out %2, %3 \n\t" // 1
      "lsl %1 \n\t" // 2
      "dec %0 \n\t" // 3
      " rjmp .+0 \n\t" // 5
      " brcs .+2 \n\t" // 6l / 7h
      " out %2,%4 \n\t" // 7l / -
      " rjmp .+0 \n\t" // 9
      " nop \n\t" // 10
      " out %2,%4 \n\t" // 11
      " breq end%= \n\t" // 12      nt. 13 taken
      " rjmp .+0 \n\t" // 14
      " rjmp .+0 \n\t" // 16
      " rjmp .+0 \n\t" // 18
      " rjmp loop%= \n\t" // 20
      "end%=: \n\t"
      : "=&d" (ctr)
      : "r" (curbyte), "I" (_SFR_IO_ADDR(DATA_PORT)), "r" (maskhi), "r" (masklo)
    );
  }

}


//##############################################################################
//                                                                             #
// End of program                                                              #
//                                                                             #
//##############################################################################


uwefed

Ein IC ist aller 3 LEDs
Also leuchten immer 3 LED in der gleichen Farbe und Du hast dann nur 100 WS2811 oder anders gesagt nur 100 Bildpunkte aus je 3 LED.

cool18

Jo grade nochmal ins Produktdatenblatt gekuckt 3 LEDs Hägen zusammen. Für mich jetzt auch kein Problem da es auf 10 Meter eh egal ist. Ich habe auch kein Effekt drinnen wo es unheimlich wichtig Wäre das sie alle Einzeln Gesteuert werden.

So habe mir grade ein Original Arduino und ein Elegoo UNO R3 Bestellt. Der eine ist Reserve es kann ja immer was Passieren mann weiß ja nie.

Es handelt sich um dieses LED Streifen
https://de.aliexpress.com/item/WS2811-led-strip-5m-30-48-60-leds-m-10-16-20-pcs-ws2811-ic-meter/32261813740.html

Go Up