Go Down

Topic: WS2812 Streifen erste LED leuchtet immer grün (Read 141 times) previous topic - next topic

peterrre

Jun 19, 2019, 10:20 am Last Edit: Jun 19, 2019, 10:59 am by peterrre
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

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?
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.
rot ist blau und Plus ist Minus

peterrre

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.

uwefed

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

peterrre

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.

uwefed

#5
Jun 20, 2019, 12:04 pm Last Edit: Jun 20, 2019, 12:05 pm by uwefed
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

peterrre

#6
Jun 20, 2019, 01:54 pm Last Edit: Jun 20, 2019, 01:57 pm by peterrre
Wir benutzen keine sketche, bei uns ist das ein normales C Programm, welches in einer main() ist.

Code: [Select]


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

Code: [Select]

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:

Code: [Select]
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;
  }
}

uwefed

#7
Jun 20, 2019, 04:30 pm Last Edit: Jun 20, 2019, 04:30 pm by uwefed
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.
https://github.com/adafruit/Adafruit_NeoPixel

grüße Uwe

Go Up