WS2812 Streifen erste LED leuchtet immer grün

Hallo miteinander,

ich habe eine Problem und zwar leuchtet bei meinem WS2812 Streifen die erste LED im Stripeset immer grün, egal was ich mache.

Nach ein paar Recherchen hab ich verschiedene Widerstände beim Datenpin versucht: 48 Ohm, 220 Ohm und 470 Ohm. Keiner dieser Widerstände brachte Erfolg.

Die Datenleitung ist an PD6 am Arduino Pro Mini.

An was könnt es denn noch liegen?

LG

Vielleicht hat die 1. LED den Geist aufgegeben. Was du nicht schreibst, gehen denn die dahinter, oder ist nur die 1. grün und es geht garnichts?
Ich hatte beim selber Bestücken auch schon Fälle, wo mittendrin mal eine nicht wollte, oder eine Farbe gefehlt hat. Muß man dann halt austauschen.
470 Ohm passt schon. Es kommt da weniger auf den genauen Wert an.

nix_mehr_frei:
Vielleicht hat die 1. LED den Geist aufgegeben. Was du nicht schreibst, gehen denn die dahinter, oder ist nur die 1. grün und es geht garnichts?

Doch die dahinter gehen einwandfrei in der Farbe, wo eingestellt wird.

Würde auch darauf tippen daß die erste LED kaputt ist. Schneide sie ab.

Der Widerstand in der Datenleitung soll dafür sorgen daß die erste LED nicht kaputtgeht wenn ein Signal (Spannung) am Datenbit anliegt aber die Versorgungsspannung fehlt. Er hat keinerlei funktion für den Betrieb.

Grüße Uwe

uwefed:
Würde auch darauf tippen daß die erste LED kaputt ist. Schneide sie ab.

Hab ich gemacht, jetzt leuchtet die neue "erste" wieder grün.

peterrre:
Hab ich gemacht, jetzt leuchtet die neue "erste" wieder grün.

Dann hast Du das so programmiert.
Willst Du uns Deinen Skech zeigen?
Mein Verdacht ist daß Du ein Array oder Schleife mit 1 anfängst und nicht mit 0.
Grüße Uwe

Wir benutzen keine sketche, bei uns ist das ein normales C Programm, welches in einer main() ist.

 // LED init
 NeoPixelBegin(nLED); //Anzahl nLED z.B 10
 setBrightness(bright); //hier wird die Helligkeit gesetzt
        setColor(); // hier werden die Farben der jeweiligen LEDs gesetzt
 NeoPixelShow();

und die setColor() funktion schaut wie folgt aus:

void setColor() {
 switch(colorMode) { // Verschiedene Farbmodis
 case 0:
 rgb[0] = 255;
 rgb[1] = 0;
 rgb[2] = 0;
 break;
 case 1:
 rgb[0] = 0;
 rgb[1] = 255;
 rgb[2] = 0;
 break;
 case 2:
 rgb[0] = 0;
 rgb[1] = 0;
 rgb[2] = 255;
 break;
 case 3:
 rgb[0] = 255;
 rgb[1] = 255;
 rgb[2] = 255;
 break;
 default:
 rgb[0] = 0;
 rgb[1] = 0;
 rgb[2] = 0;
 break;
 }
/* Setzen der LEDs */
 int i = 0;
 for(i; i < nLED; i++) {
 setPixelColor(i, rgb[0], rgb[1], rgb[2]);
 }
}

und die setPixelColor(arg..) schaut so aus:

void setPixelColor(
 uint16_t n, uint8_t r, uint8_t g, uint8_t b) {

  if(n < numLEDs) {
    if(brightness) { // See notes in setBrightness()
      r = (r * brightness) >> 8;
      g = (g * brightness) >> 8;
      b = (b * brightness) >> 8;
    }
    uint8_t *p;
    if(wOffset == rOffset) { // Is an RGB-type strip
      p = &pixels[n * 3];    // 3 bytes per pixel
    } else {                 // Is a WRGB-type strip
      p = &pixels[n * 4];    // 4 bytes per pixel
      p[wOffset] = 0;        // But only R,G,B passed -- set W to 0
    }
    p[rOffset] = r;          // R,G,B always stored
    p[gOffset] = g;
    p[bOffset] = b;
  }
}

Wie sollen wir einen Fehler finden wenn Du Codeschnipsel zeigst?
Dann solltest Du zur Kontrolle mal einen BeispielSketch zb simple.ino der Adafruit-Neopixel Bibliothek verwenden.

grüße Uwe