WS2812 Neopixel Anzeigefehler

Ihr Lieben,

leider habe ich für mein Problem bei Google bislang keine Lösung gefunden, daher versuche ich es als absoluter Neuling hier mal.

Ich habe mir einen Ring mit 60 ws2812 gekauft und wollte als eines meiner ersten Prjekte überhaupt gerne eine digitale Uhr damit zaubern. Im Moment habe ich aber folgendes Problem:

Wenn ich den Beispielsketch "simple" hochlade und starte, leuchtet wie geplant jede halbe Sekunde eine weitere LED, bis der Ring voll ist. Aber: Zu Beginn leuchtet auch immer eine, selten auch zwei andere LEDs auf. Wenn ich den Code variiere und uploade, ist es eine andere LED, aber weder kann ich da ein System hinter erkennen, noch kann ich es abstellen. Nach einiger Zeit geht sie meist aus, und das Programm läuft normal durch, bis es mit dem gleichen Fehler wieder resettet wird. Bei anderen Beispielsketches habe ich das gleiche Problem.

Zusammengefasst also: Es liegt nicht an einer einzelnen LED oder dem dazugehörigen Chip, denn es ist ja bei jedem neuen Hochladen eines neuen Sketchs eine andere, die den Fehler aufweist. Auch gibt es im Code selbst, soweit ich sehe, keinen Grund, warum das angezeigt wird. Kurzum: Ich bin völlig ratlos. Habt Ihr vielleich eine Idee, was das Problem sein kann? Hab ich ggf. den Ring geschrottet? Oder übersehe ich war?

Hier einer der Codes:

// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// Released under the GPLv3 license to match the rest of the
// Adafruit NeoPixel library

#include <Adafruit_NeoPixel.h>
#ifdef AVR
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif

// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 26 // On Trinket or Gemma, suggest changing this to 1

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 60
// Popular NeoPixel ring size

Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_BRG + NEO_KHZ400);

#define DELAYVAL 250 // Time (in milliseconds) to pause between pixels

void setup() {
pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
}

void loop() {
pixels.clear(); // Set all pixel colors to 'off'
delay(1000);
// The first NeoPixel in a strand is #0, second is 1, all the way up
// to the count of pixels minus one.
for(int i=0; i<NUMPIXELS; i++) { // For each pixel...

pixels.setPixelColor(i, pixels.Color(0, 100, 0)); //rot, blau, grün

pixels.show(); // Send the updated pixel colors to the hardware.

delay(DELAYVAL); // Pause before next pass through loop
}
}

Ich würde zu Anfang mal alle WS2812 mit 000000 initialisieren.

Für den Sketch benutze CODE TAGS und keine QUOTE TAGs
Grüße Uwe

Wie lang ist das Kabel zwischen Controller und Ring?

Wow, das war tatsächlich das Problem:
Ich habe jetzt die Zeile " pixels.begin();" eingefügt, und jetzt läuft es (bildlich( rund. Vielen Dank für die Hilfe!

Editiert:
Skurril, denn jetzt ist mir aufgefallen, dass ich das auch schon im Setup hatte, jetzt hab ich's also doppelt. Naja, wenn's funktiniert, ist ja alles gut

zackaflitsch:
Wow, das war tatsächlich das Problem:
Ich habe jetzt die Zeile " pixels.begin();" eingefügt, und jetzt läuft es (bildlich( rund. Vielen Dank für die Hilfe!

Editiert:
Skurril, denn jetzt ist mir aufgefallen, dass ich das auch schon im Setup hatte, jetzt hab ich's also doppelt. Naja, wenn's funktiniert, ist ja alles gut

Wollte ich auch gerade sagen, daß DU die schon hattest.
Mach mal nach dem pixels.begin() eine kleine Delay() Pause.
Grüße Uwe

Wie lang ist das Kabel zwischen Controller und Ring?

Leider ist das Problem tatsächlich wieder da. Schade.
Den delay hab ich jetzt eingebaut, aber das hat leider keinen Effekt gehabt.
Das Kabel ist ziemlich kurz, etwa 10 cm.

zackaflitsch:
... jetzt läuft es ...

Da bin ich etwas skeptisch.

Wie werden die LEDs mit Strom versorgt?

Da bin ich etwas skeptisch

Zu Recht...

sie sind über ein USB Breadboard Power Supply an 5V angeschlossen.

Du benötigst 3,6 A, kann das Netzteil das liefern? Hast Du an den Kondensator in der Nähe des Rings gedacht?

zackaflitsch:
sie sind über ein USB Breadboard Power Supply an 5V angeschlossen.

Du bist aber mutig oder auch leichtsinnig.

3,6A über ein Breadboard ? Das geht schnell mal in die Hose.

Du benötigst 3,6 A, kann das Netzteil das liefern? Hast Du an den Kondensator in der Nähe des Rings gedacht?

Beides leider nein.

Ersteres hielt ich für erst einmal unproblematisch, da ich ausprobieren wollte, ob es überhaupt läuft, und daher die LEDs nur mit geringer Leistung ansteuern wollte, also nie ansatzweise alle gleichzeitig in allen Farben, und auch nur für kurze Zeit. Habe ein Netzteil, das ich nachher verbinden wollte, aber erst, wenn alles läuft.

Letzteres war mit tatsächlich nicht bewusst. Hatte eine Anleitung im Internet gefunden, in der aber von einem Kondensator nichts stand, nur von dem Eingangswiderstand, der aber ja schon auf dem Ring ist. Ich werde das mal ausprobieren. Da der Fehler immer nur am Anfang bei Inbetriebnahme auftritt, scheint mir das eine logische Ursache zu sein.

Vielen Dank nochmal!

Besteht denn auch noch mal die Chance, dass du deinen Sketch richtig postest ?
In Code-Tags wird der deutlich besser lesbar.

Die Möglichkeit hatte ich gar nicht gesehen, sorry.

Der letze Code sah so aus:

// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// Released under the GPLv3 license to match the rest of the
// Adafruit NeoPixel library

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
 #include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif

// Which pin on the Arduino is connected to the NeoPixels?
#define PIN        26 // On Trinket or Gemma, suggest changing this to 1

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 60
// Popular NeoPixel ring size

Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_BRG + NEO_KHZ800);

#define DELAYVAL 250 // Time (in milliseconds) to pause between pixels

void setup() {
  pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
}

void loop() {
  pixels.clear(); // Set all pixel colors to 'off'
  delay(1000); 
  // The first NeoPixel in a strand is #0, second is 1, all the way up
  // to the count of pixels minus one.
  for(int i=0; i<NUMPIXELS; i++) { // For each pixel...

    pixels.setPixelColor(i, pixels.Color(1, 1, 1));

    pixels.show();   // Send the updated pixel colors to the hardware.

    delay(DELAYVAL); // Pause before next pass through loop
  }
}

Allerdings habe ich mich nach den Hinweisen hier entschieden, erst einmal ein passendes Netzteil und einen Kondensator anzuschließen, und es dann erst erneut zu probieren. Wie gesagt, bin noch totaler Neuling und versuche gerade, mich an die ganzen Möglichkeiten heranzutasten.

Beim Adafruit NeoPixel Überguide ist der Kondensator dabei.

Die Dame mit den roten Haaren ist übrigens die Chefin lady ada nach Ada Lovelace.