WS2812 LEDs ansteuern, über 2 Pin Ausgänge in einem Sketch

Folgendes Problem, hoffe jemand hat mir einen Tipp,
Ich habe einen Sketch der Funktioniert, für die ansteuerung von 2 RGB ringen mit jeweils 3 WS2812 Leds. Total 6 Leds.

Vom Verkabelungsaufwand her möchte ich 2 weitere 3Bit RBD Led Ringe ansteuern über einen 2ten pin am Arduino Uno, wie definiere ich das im Sketch?

Das Sind ja dann 2 Sketches in einem aber mit 2 seperaten pin anschlüssen.

Die ersten pixel 0 bis 5 von den Leds (Din) kommen an pin 6 von Arduino.
Siehe angefügten Sketch am schluss.
Die gleiche ansteuerung und Programmierung für die andere 2 3bit RGD LED Ringe soll für (Din) am pin 7 auf dem Arduino angeschlossen werden.

wie bewerkstellige ich das??? Habe mich schon dumm gesucht

#include <Adafruit_NeoPixel.h>
#ifdef AVR
#include <avr/power.h>
#endif

// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 6

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 6

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
pixels.begin(); // This initializes the NeoPixel library.
}

void loop() {

// For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one.

for(int i=0;i<NUMPIXELS;i++){

pixels.setPixelColor(0, pixels.Color(255,0,0)); // led ring1 rechts oben, rot, pixel 1
pixels.setPixelColor(1, pixels.Color(200,0,0)); // rot,pixel 2
pixels.setPixelColor(2, pixels.Color(0,0,255)); // blau,pixel 3
pixels.setPixelColor(3, pixels.Color(255,255,255)); // led ring2, rechts unten, weiss, pixel 1
pixels.setPixelColor(4, pixels.Color(0,0,0)); // aus, pixel 2
pixels.setPixelColor(5, pixels.Color(255,0,0)); // rot, pixel 3
pixels.show(); // This sends the updated pixel color to the hardware.

}
}

Der nächste Code soll dazu kommen für Pin 7:

#include <Adafruit_NeoPixel.h>
#ifdef AVR
#include <avr/power.h>
#endif

// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 7

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 6

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
pixels.begin(); // This initializes the NeoPixel library.
}

void loop() {

// For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one.

for(int i=0;i<NUMPIXELS;i++){

pixels.setPixelColor(0, pixels.Color(255,0,0)); // led ring1, Links oben, rot,pixel 1
pixels.setPixelColor(1, pixels.Color(255,0,0)); // rot,pixel 2
pixels.setPixelColor(2, pixels.Color(255,0,0)); // rot,pixel 3
pixels.setPixelColor(3, pixels.Color(255,255,255)); // led ring2, Links unten, rot, pixel 1
pixels.setPixelColor(4, pixels.Color(255,0,0)); // rot, pixel 2
pixels.setPixelColor(5, pixels.Color(255,0,0)); // rot, pixel 3
pixels.show(); // This sends the updated pixel color to the hardware.

}
}

Dein Sketch ist fast nicht zu lesen. In einem Mobilgerät überhaupt nicht.

Setze bitte deine 2 Sketche in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken.

Damit wird dieser für alle besser lesbar.

Hänge alle LEDs hintereinander, es ändern sich nur die Indices des zweiten Rings.

Und in NUMPIXELS die Anzahl der Led

code 1

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>
#endif

// Which pin on the Arduino is connected to the NeoPixels?
#define PIN            6

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS      6

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  pixels.begin(); // This initializes the NeoPixel library.
}

void loop() {

  // For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one.

  for(int i=0;i<NUMPIXELS;i++){

    pixels.setPixelColor(0, pixels.Color(255,0,0)); // led ring1 rechts oben, rot, pixel 1
    pixels.setPixelColor(1, pixels.Color(200,0,0)); // rot,pixel 2
    pixels.setPixelColor(2, pixels.Color(0,0,255)); // blau,pixel 3
    pixels.setPixelColor(3, pixels.Color(255,255,255)); // led ring2, rechts unten, weiss, pixel 1
    pixels.setPixelColor(4, pixels.Color(0,0,0)); // aus, pixel 2
    pixels.setPixelColor(5, pixels.Color(255,0,0)); // rot, pixel 3
    pixels.show(); // This sends the updated pixel color to the hardware.

  }
}

code 2 der auf pin 7 arbeiten soll

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>
#endif

// Which pin on the Arduino is connected to the NeoPixels?
#define PIN            7

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS      6

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  pixels.begin(); // This initializes the NeoPixel library.
}

void loop() {

  // For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one.

  for(int i=0;i<NUMPIXELS;i++){

    pixels.setPixelColor(0, pixels.Color(255,0,0)); //  led ring1, Links oben, rot,pixel 1
    pixels.setPixelColor(1, pixels.Color(255,0,0)); // rot,pixel 2
    pixels.setPixelColor(2, pixels.Color(255,0,0)); // rot,pixel 3
    pixels.setPixelColor(3, pixels.Color(255,255,255)); // led ring2, Links unten, rot, pixel 1
    pixels.setPixelColor(4, pixels.Color(255,0,0)); // rot, pixel 2
    pixels.setPixelColor(5, pixels.Color(255,0,0)); // rot, pixel 3
    pixels.show(); // This sends the updated pixel color to the hardware.

  }
}

Ihr habt natürlich recht… hätte ich nicht platz probleme im Tacho.
Der erste Led Ring leitet über Dout weiter zum 2ten Led Ring, habe dort aber fast kein platz für auf dout weiterzuleiten / Kabel anzulöten.
Ist im Tacho vom Auto ganz an der Seite und berührt die wand, umpositionieren geht nicht, da es die Tachonadeln beleuchtet.

Deshalb wollte ich 2 weitere Ringe über einen seperaten ausgang Pin 7 ansteuern. Wen das jedoch zu aufwendig währe, mache ich mir platz für die Kabel!
Gehäuse bearbeiten… Dachte ich könnte es so lösen, mit je einem PIN vom Arduino 2 Ringe ansteuern. Also Total 4 3Bit Led Ringe

Geht auch, mit ner zweiten Instanz und zweitem Namen der Neopixel.

Der eine Draht von dem einen Ring zum anderen nimmt doch keinen Platz weg, aber du kannst mich gerne mit Fotos zu einer anderen Überzeugung bringen.

Akropolis: Also Total 4 3Bit Led Ringe

Das verstehe ich überhaupt nicht.

Wieviele LEDs willt du denn nun haben? Ringe gibt es in mannigfaltigen Größen.

stimmt ja ich muss nur die datenleitung weiterführen und 5V mit GND direkt wie die anderen 2 ringe betreiben :D dann hats platz :D es liegen dort eben noch 3 offene schrittmotor lötstellen von den wiklungen für die Tachonadel deshalb wollte ich dort nicht 3 Kabel weiterführen. mit nur der Datenleitung gehts einfacher.

4 led Ringe mit jeweils 3 Leds auf einem ring. total sinds dann 12 leds auf 4 ringe vetteillt :D

einem LED Ring mit 3 WS LEDS Kann man doch auch 3 Bit Leds sagen ;)? weil jede Led 1 Bit braucht.

HotSystems:
Geht auch, mit ner zweiten Instanz und zweitem Namen der Neopixel.

wie würde dass aussehen in Code? Bin im Sketchen leider noch anfänger…

Also eine erneute #include <Adafruit_NeoPixel.h>
Umbennenen in z.b #include <Adafruit_NeoPixel2.h>

und diese #include <Adafruit_NeoPixel2.h> in die Library hochladen?

Akropolis: weil jede Led 1 Bit braucht.

Meine WS2812 haben 24 Bit.

Akropolis: wie würde dass aussehen in Code?

  Adafruit_NeoPixel pixels1(NUMPIXELS, PIN1, NEO_GRB + NEO_KHZ800);
  Adafruit_NeoPixel pixels2(NUMPIXELS, PIN2, NEO_GRB + NEO_KHZ800);

arduino meldet noch x fehler: ich weiss nicht wie ich die ersten 6 Leds an pin6 zuweise…

Arduino: 1.8.2 (Windows 7), Board: “Arduino Nano, ATmega328”

C:\Users\iTF\Documents\Arduino\tacho_tank_temp_leds\tacho_tank_temp_leds.ino:8:0: warning: “PIN” redefined

#define PIN 7

^

C:\Users\iTF\Documents\Arduino\tacho_tank_temp_leds\tacho_tank_temp_leds.ino:7:0: note: this is the location of the previous definition

#define PIN 6

^

C:\Users\iTF\Documents\Arduino\tacho_tank_temp_leds\tacho_tank_temp_leds.ino: In function ‘void setup()’:

tacho_tank_temp_leds:16: error: ‘pixels’ was not declared in this scope

pixels.begin(); // This initializes the NeoPixel library.

^

C:\Users\iTF\Documents\Arduino\tacho_tank_temp_leds\tacho_tank_temp_leds.ino: In function ‘void loop()’:

tacho_tank_temp_leds:25: error: ‘pixels’ was not declared in this scope

pixels.setPixelColor(0, pixels6.Color(255,0,0)); // led ring1 rechts oben, rot, pixel 1

^

exit status 1
‘pixels’ was not declared in this scope

This report would have more information with
“Show verbose output during compilation”
option enabled in File → Preferences.

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif

// Which pin on the Arduino is connected to the NeoPixels?
#define PIN            6
#define PIN            7

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS      6  // oder doch 12 für beide pins ????????

Adafruit_NeoPixel pixels6(NUMPIXELS, PIN6, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels7(NUMPIXELS, PIN7, NEO_GRB + NEO_KHZ800);
void setup() {
  pixels.begin(); // This initializes the NeoPixel library.
}

void loop() {

  // For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one.

  for(int i=0;i<NUMPIXELS;i++){

    pixels.setPixelColor(0, pixels.Color(255,0,0)); // led ring1 rechts oben, rot, pixel 1
    pixels.setPixelColor(1, pixels.Color(200,0,0)); // blau,pixel 2
    pixels.setPixelColor(2, pixels.Color(0,0,255)); // blau,pixel 3
    pixels.setPixelColor(3, pixels.Color(255,255,255)); // led ring2, rechts unten, weiss, pixel 1
    pixels.setPixelColor(4, pixels.Color(0,0,0)); // aus, pixel 2
    pixels.setPixelColor(5, pixels.Color(255,0,0)); // rot, pixel 3
    pixels.show(); // This sends the updated pixel color to the hardware.

  }
}

ohne diesen versuch jezt, klappt der sketch ja. ist wohl noch zu schwer für mich! dann müssen halt alle leds an einer reihe verbunden werden.

Solltest eine grobe Ahnung kriegen, wofür solche Namen gut sind.

#define PIN 6

dient dazu, überall wo später eine 6 ( möglichst in der Bedeutung als Pin-Nummer ) zu verwenden ist, statt dessen das Wort PIN zu verwenden.

Für verschiedene Pins sollte man also verschiedene Namen vergeben.

Ebenso sollte man, wenn man verschiedene Namen vergibt ( pixel6 und pixel7 sind bei dir solche Namen ), diese auch verwenden.

Hallo,

Versuch mal hier den Link, da hab ich im Grunde auch alle Infos her die ich bisher gebraucht habe. https://cdn-learn.adafruit.com/downloads/pdf/adafruit-neopixel-uberguide.pdf

Außerdem geb ich dir mal einen kleinen Tipp:

Wenn du 2 mal den gleichen Namen mit 2 uterschiedlichen Pins hast funktioniert das nicht :D

Beispiel:

#define PIN1 6
#define PIN2 7

#define NUMPIXELS 6 //Diese Variable kannst du für beide Initiallisierungen nutzen

Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(NUMPIXELS, PIN1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(NUMPIXELS, PIN2, NEO_GRB + NEO_KHZ800);

void setup()
{
  strip1.begin();
  strip1.show();

  strip2.begin();
  strip2.show();
}

void loop()
{

  strip1.setPixelColor(0, pixels.Color(255,0,0)); // led ring1 rechts oben, rot, pixel 1
  strip1.setPixelColor(1, pixels.Color(200,0,0)); // rot,pixel 2
  strip1.setPixelColor(2, pixels.Color(0,0,255)); // blau,pixel 3
  strip1.setPixelColor(3, pixels.Color(255,255,255)); // led ring2, rechts unten, weiss, pixel 1
  strip1.setPixelColor(4, pixels.Color(0,0,0)); // aus, pixel 2
  strip1.setPixelColor(5, pixels.Color(255,0,0)); // rot, pixel 3
  strip1.show(); // This sends the updated pixel color to the hardware.


  strip2.setPixelColor(0, pixels.Color(255,0,0)); //  led ring1, Links oben, rot,pixel 1
  strip2.setPixelColor(1, pixels.Color(255,0,0)); // rot,pixel 2
  strip2.setPixelColor(2, pixels.Color(255,0,0)); // rot,pixel 3
  strip2.setPixelColor(3, pixels.Color(255,255,255)); // led ring2, Links unten, rot, pixel 1
  strip2.setPixelColor(4, pixels.Color(255,0,0)); // rot, pixel 2
  strip2.setPixelColor(5, pixels.Color(255,0,0)); // rot, pixel 3
  strip2.show(); // This sends the updated pixel color to the hardware.

}

Versuch mal den Code.

Danke allen für die fleissige Hilfe :))

bdorer:
Versuch mal den Code.

Leider noch n fehler:

exit status 1
‘pixels’ was not declared in this scope

in zeile :

void loop()
{

strip1.setPixelColor(0, pixels.Color(255,0,0)); // led ring1 rechts oben, rot, pixel 1

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif

#define PIN1 6
#define PIN2 7

#define NUMPIXELS 6 //Diese Variable kannst du für beide Initiallisierungen nutzen

Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(NUMPIXELS, PIN1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(NUMPIXELS, PIN2, NEO_GRB + NEO_KHZ800);

void setup()
{
  strip1.begin();
  strip1.show();

  strip2.begin();
  strip2.show();
}

void loop()
{

  strip1.setPixelColor(0, pixels.Color(255,0,0)); // led ring1 rechts oben, rot, pixel 1
  strip1.setPixelColor(1, pixels.Color(200,0,0)); // rot,pixel 2
  strip1.setPixelColor(2, pixels.Color(0,0,255)); // blau,pixel 3
  strip1.setPixelColor(3, pixels.Color(255,255,255)); // led ring2, rechts unten, weiss, pixel 1
  strip1.setPixelColor(4, pixels.Color(0,0,0)); // aus, pixel 2
  strip1.setPixelColor(5, pixels.Color(255,0,0)); // rot, pixel 3
  strip1.show(); // This sends the updated pixel color to the hardware.


  strip2.setPixelColor(0, pixels.Color(255,0,0)); //  led ring1, Links oben, rot,pixel 1
  strip2.setPixelColor(1, pixels.Color(255,0,0)); // rot,pixel 2
  strip2.setPixelColor(2, pixels.Color(255,0,0)); // rot,pixel 3
  strip2.setPixelColor(3, pixels.Color(255,255,255)); // led ring2, Links unten, rot, pixel 1
  strip2.setPixelColor(4, pixels.Color(255,0,0)); // rot, pixel 2
  strip2.setPixelColor(5, pixels.Color(255,0,0)); // rot, pixel 3
  strip2.show(); // This sends the updated pixel color to the hardware.

}

Nimm strip1 anstelle von pixels.

Gruß Tommy

Und lerne bitte die Grundlagen. Dann kannst du dir die banalen Fragen selbst beantworten. Grundlagen wirst du bei der Programmierung immer benötigen.

Tommy56: Nimm strip1 anstelle von pixels.

Gruß Tommy

Danke. hat geholfen... die PDF Anleitung über Adafruit oben ist auch top. danke dafür.

Funktioniert Done Compilling

mit ein paar warnugen...? ist das normal oder zu vernachlässigen ?

C:\Users\iTF\Desktop\neuster_led_rgb_ring_code_f_r_2_pin\neuster_led_rgb_ring_code_f_r_2_pin.ino:6:0: warning: "PIN1" redefined

define PIN1 6

^

In file included from c:\program files\arduino\hardware\tools\avr\avr\include\avr\io.h:627:0,

from c:\program files\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

from C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

from sketch\neuster_led_rgb_ring_code_f_r_2_pin.ino.cpp:1:

c:\program files\arduino\hardware\tools\avr\avr\include\avr\portpins.h:71:0: note: this is the location of the previous definition

define PIN1 1

^

C:\Users\iTF\Desktop\neuster_led_rgb_ring_code_f_r_2_pin\neuster_led_rgb_ring_code_f_r_2_pin.ino:7:0: warning: "PIN2" redefined

define PIN2 7

^

In file included from c:\program files\arduino\hardware\tools\avr\avr\include\avr\io.h:627:0,

from c:\program files\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

from C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

from sketch\neuster_led_rgb_ring_code_f_r_2_pin.ino.cpp:1:

c:\program files\arduino\hardware\tools\avr\avr\include\avr\portpins.h:70:0: note: this is the location of the previous definition

define PIN2 2

^

Nimm in Deinem Sketch eine andere Bezeichnung für die Pins. Sowas könnte später als Fehler definiert werden. Also MYPIN1 oder so. Am Besten was der Pin macht.

Gruß Tommy

Die grundlagen prügle ich mir seit paar tagen ein Hab auch das Handbuch von Arduino mit Beispielen :D danke für eure Hilfe. ist ja nur eine warung die sagt das die beiden pins umbenannt wurden :D ok. TOP Läuft. war mein erster sketch.

Tommy56: Nimm in Deinem Sketch eine andere Bezeichnung für die Pins. Sowas könnte später als Fehler definiert werden. Also MYPIN1 oder so. Am Besten was der Pin macht.

Gruß Tommy

Danke hat geholfen :))