Jinx! `Arduino gibt kein Signal aus

Moin die liebe Post hat mir heute mein Uno R3 gebracht.
Ich bin blutiger anfänger im bereich Arduino das Vorweg.

Ich habe mir Billig in China WS2811 Bestellt waren 2x5m für 15 Euro das muss ich einfach kaufen.
Also habe ich mir ein paar YouTube Video Angekuckt und festgestellt ein Arduino geht als Steuerung.

Ich habe mir also Heute das Arduino Tool runtergeladen und dann denn Skech auf Solarlab
http://www.solderlab.de/index.php/downloads/category/4-glediator
Jinx läuft auch mit denn Sektch von Glediator.

Also denn passenden Sketch runtergeladen und auf denn Arduino geladen. Ging ohne Probleme. Jetzt schnell in Jinx und dort schnell denn Arduino Hinzugefügt und auf Start Output geklickt am Arduino ging eine LED an was ich jetzt so Interpretiere das ich alles Richtig Eingestellt habe.

Leider gingen die WS2811 nicht an im Gegenteil sie Blieben einfach auf Weiß was ich auch nicht Verstehe die dinger gehen auch wenn sie nur Strom haben.

Weiß jemand was ich Falsch mache?

Ich habe keine Treiber installiert Windows hat das alles alleine Gemacht.

Warum fängst Du jetzt dazu ein neues Thema an? Das war doch der Endstand in Deinem anderen Thread?

Gruß Tommy

Die Frage war da Welchen Arduino ich nehmen Soll.
Hier Wäre es eine Software Sache da war ich mir nicht sicher denn vielleicht kucken andere noch mit drauf die schon mal so ein Problem hatten.

Aber die ganzen Informationen und Links sind dort. Meinst Du, die sucht jemand über mehrere Threads zusammen?

Aber gut, ist Deine Entscheidung.

Gruß Tommy

Edit: Stelle doch mal den Sketch ein, den Du auf den Arduino geflasht hast.

Gut da könntest du Recht haben.

Ich Verlinke hier denn Thread nochmal

Die entscheidende Frage nach dem Sketch auf dem Arduino hast Du noch nicht beantwortet. Sorry, die hatte ich nachgeschoben.

Gruß Tommy

Akuteller Sketch

//##############################################################################
//##############################################################################
//                                                                             #
// 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   100


//##############################################################################
//                                                                             #
// 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                                                              #
//                                                                             #
//##############################################################################

Eine von mehreren Möglichkeiten der Fehlereingrenzung: FirstLight von FastLED probieren.

#define NUM_LEDS 100
#define DATA_PIN 6
...
FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);

Wenn das funktioniert, ist die Hardware OK.

Kann ich FastLed einfch drauf Packen ohne was zu machen? Also drauf die LEDs gehen alleine An und machen Irgentwas? Was muss ich dort auswählen für ws2811

   // Use if you want to force the software SPI subsystem to be used for some reason (generally, you don't)
// #define FASTLED_FORCE_SOFTWARE_SPI
// Use if you want to force non-accelerated pin access (hint: you really don't, it breaks lots of things)
// #define FASTLED_FORCE_SOFTWARE_SPI
// #define FASTLED_FORCE_SOFTWARE_PINS
#include "FastLED.h"

///////////////////////////////////////////////////////////////////////////////////////////
//
// Move a white dot along the strip of leds.  This program simply shows how to configure the leds,
// and then how to turn a single pixel white and then off, moving down the line of pixels.
// 

// How many leds are in the strip?
#define NUM_LEDS 60

// Data pin that led data will be written out over
#define DATA_PIN 3

// Clock pin only needed for SPI based chipsets when not using hardware SPI
//#define CLOCK_PIN 8

// This is an array of leds.  One item for each led in your strip.
CRGB leds[NUM_LEDS];

// This function sets up the ledsand tells the controller about them
void setup() {
	// sanity check delay - allows reprogramming if accidently blowing power w/leds
   	delay(2000);

      // Uncomment one of the following lines for your leds arrangement.
      // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
      FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
      // FastLED.addLeds<APA104, DATA_PIN>(leds, NUM_LEDS);
      // FastLED.addLeds<WS2811_400, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);

      // FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<P9813, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<APA102, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<DOTSTAR, RGB>(leds, NUM_LEDS);
      
      // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<DOTSTAR, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
}

// This function runs over and over, and is where you do the magic to light
// your leds.
void loop() {
   // Move a single white led 
   for(int whiteLed = 0; whiteLed < NUM_LEDS; whiteLed = whiteLed + 1) {
      // Turn our current led on to white, then show the leds
      leds[whiteLed] = CRGB::White;

      // Show the leds (only one of which is set to white, from above)
      FastLED.show();

      // Wait a little bit
      delay(100);

      // Turn our current led back to black for the next loop around
      leds[whiteLed] = CRGB::Black;
   }
}

Ein Arduino kann keine 100 WS2812 mit Strom versorgen. Die bräuchten 6A. Ein Arduino an USB kan ca 450mA liefern, Ein Arduino an externen Netzteil, je nach Netzteilspannung zwischen 200mA und 50mA

Versuch es mal mit 6 WS2812.

Grüße Uwe

Die LED Streifen werden von Netzteilen Versorgt um Genau zu sein jeder Streifen hat eine eigens Netzteil. Mit 12V und 4A
Ich habe übrigens WS2811
In der Ansteuerung ist der Wurm Drinne.

So habe es grade mit Fast LED Getestet Läuft ohne Probleme!

Beim Gladiator Sketch wird der Streifen einfach aus also von weiß auf aus. Scheint so als ob er Single kriegt aber sie kommen nicht wirklich an.

Habe das Verwenden alles geht Hardware ist also I.O

#include "FastLED.h"
#define NUM_LEDS 100
// Data pin that led data will be written out over
#define DATA_PIN 4

CRGB leds[NUM_LEDS];// This is an array of leds.  One item for each led in your strip.

int bank_1_size = 10;  //Number of LEDs in bank 1
int bank_2_size = 10;  //Number of LEDs in bank 2
int c; //bank1 display
int d; //bank2 display
int offset = 25; //Number of LEDs between banks
int bank2; //bank 2 start location


void setup() {
  // sanity check delay - allows reprogramming if accidently blowing power w/leds
    delay(2000);

      FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);

}

// Main endless Loop
void loop() {
   
   for(int bank1 = 0; bank1 < NUM_LEDS; bank1 = bank1 + 1) {
      // Turn our current led on to white, then show the leds

 if (bank1 - offset <= -1)
 { bank2 = NUM_LEDS + bank1 - offset ;}

 else
 { bank2 = bank1 - offset ;}
 
      leds[bank1] = CRGB::Red; //colour of bank1
      leds[bank2] = CRGB::Green; //colour of bank 2

      // Show the leds 
      FastLED.show();

      // Wait a little bit
      delay(40);

      // Turn our current led back to black for the next loop around
    if (bank1 < bank_1_size) 
    { c = (bank1 + NUM_LEDS - bank_1_size );} 
    else 
    { c = (bank1 - bank_1_size );}
      leds[c] = CRGB::Blue; //colour between bank1 & bank2
      
 if (bank2 < bank_2_size ) 
    { d = (bank2 + NUM_LEDS - bank_2_size );} 
    else 
    { d = (bank2 - bank_2_size   );}
      leds[d] = CRGB::Yellow; //colour between bank2 and bank 1
     
    
      
      
   }
}

Die Hardware funktioniert, das ist gut.

Nun sehe ich zwei mögliche Fehlerquellen bezogen auf den Glediator-Sketch:

  • Die Daten kommen nicht richtig rein.
  • Die Daten gehen nicht richtig zum Streifen.

Zum Testen von Punkt 2 könntest Du das Feld display_buffer mit Konstanten (0-255) beschreiben und mit go=1 die Übertragung zu den LEDs starten.

Das irritiert mich ein klein wenig: #define DATA_PIN 4, da im Glediator-Sketch Pin 6 genutzt wird.

Habe denn Data Pin in Glediator Sketch auf Pin 4 Geändert ist nur hier in Forum nur Falsch.

cool18:
… fasse ich mit mein Findern an denn Daten Pin passiert was die machen dann halt was sie wollen.

Das liest sich so, als wäre der Ausgangspin ein hochohmiger Eingangspin, dann kann man ihn mit den Fingern beeinflussen. Das kann man schön an Pin 13 beobachten.

cool18:
Habe denn Data Pin in Glediator Sketch auf Pin 4 Geändert ist nur hier in Forum nur Falsch.

Bist Du sicher, Du hast das richtig gemacht? Wäre es nicht sinnvoller, den originalen Sketch mit Pin 6 zu probieren?

Moin habe es zum Laufen Bekommen. Pin dabei war egal.
So jetzt kommt der Hammer die dinger Flackern was das zeug hält.
Jemand ne Idee was es sein Könnte?

Evtl. beschreibst Du erst mal, wie Du es zum Laufen bekommen hast.

Gruß Tommy

cool18:
Moin habe es zum Laufen Bekommen.

Wie denn?

Hat es bei FastLED auch geflackert?

Nein in FastLED ist alles I.O

Flackern tuht es nur bei Jinx!

So sieht es mit FastLED aus

Könntest Du bitte auch unsere Fragen beantworten?

Gruß Tommy