RGB Strip LPD8806

Guten Morgen

Kann man mit einem Arduino UNO oder mega 2 RGB Strips Ansteuern.

Ich habe ein Strip mit dem LP8806 und möchte ihn gerne in 2 teilen
und so 2 verschiedene muster ausgeben.

Der zweite bleibt aber dunkel.

Hast das schon mal einer gemacht?

Glaskugel immer noch DEFEKT!

Die Anfrage ist einfach nur schwammig.

Google schmeist zu den LP8806 nicht wirklich brauchbares raus, ausser Kaufmöglichkeiten in Fernost! Wenn du die noch nicht gekauft hast, besorg dir WS2812B.

Die kannst du auch trennen und unterschiedlich ansteuern.

Mit welcher Begründung möchtest du die Strips aufteilen? Leitungslänge zwischen Ende Stripe1 und Anfang Stripe0? Wenn nein, dann es ist es programmtechnisches Problem. Ohne Sketch und verwendete Libary werden wir hier nicht weiterkommen.

Kein Problem. Der LPD8806 ist ein sehr guter Controller/Treiber, weil sauschnell. An einem Teensy kommt der mit bis zu 22MBit pro Sekunde (!) klar. Leider nur 7 Bit/Farbe. Wird sehr gern für POV/Lightpainting Anwendungen genommen, wo man teilweise extrem hohe fps braucht, wenn es gut aussehen soll.

Zurück zur Frage: Du kannst den Strip an allen vorgesehenen Stellen teilen, danach das Ende vom einen Stück elektrisch mit dem Anfang vom anderen Stück verbinden und alles ist gut.

Die Daten-/Clockleitung an den Arduino (Uno reicht) anschließen, FastLED installieren, Beispiele ausprobieren und los geht es.

Welche LEDs an und welche aus sind, bzw. welche Muster/Animationen wo laufen, ist nur eine Frage der Software, die Du schreibst.

Grüße

Helmuth

P.S. Welchen Strip genau hast Du? Den, den ETT in Deutschland vertreibt? Wieviele LEDs pro LPD8806? Wieviele LEDs insgesamt?

ja war völlig Blöd formuliert, war auch schon spät.

also ich habe jetzt einen RGB Strip LP8806 mit insgesamt 160 RGB LED
der läuft so auch wunderbar.

// Number of RGB LEDs in strand:
int nLEDs = 160;

// Chose 2 pins for output; can be any valid output pins:
int dataPin  = 2;
int clockPin = 3;



// parameters are SPI data and clock pins:
LPD8806 strip = LPD8806(nLEDs, dataPin, clockPin);

// You can optionally use hardware SPI for faster writes, just leave out
// the data and clock pin parameters.  But this does limit use to very
// specific pins on the Arduino.  For "classic" Arduinos (Uno, Duemilanove,
// etc.), data = pin 11, clock = pin 13.  For Arduino Mega, data = pin 51,
// clock = pin 52.  For 32u4 Breakout Board+ and Teensy, data = pin B2,
// clock = pin B1.  For Leonardo, this can ONLY be done on the ICSP pins.
//LPD8806 strip = LPD8806(nLEDs);

void setup() {
  // Start up the LED strip
  strip.begin();

  // Update the strip, to start they are all 'off'
  strip.show();
}


void loop() {

  // Send a simple pixel chase in...
  //colorChase(strip.Color(127, 127, 127), 50); // White
  //colorChase(strip.Color(127,   0,   0), 50); // Red
}

Die Funktionen habe ich an anderer stelle aus programmiert.
Das läuft soweit auch wunderbar.

Die Kommentare sind Original aus einem Beispiel kopiert.

Ich hätte gerne zwei Strips die unabhängig von einander Arbeiten.
Also mit 80Leds.

Kann ich einen zweiten anhängen an den Arduino?
und wenn ja wie?

Ja, mit FastLED geht das.

siehe "Multiple led arrays"

Code bitte als

#Code formatieren, Danke.

Und Du verwendest einen LPD8806, keinen LP8806..., steht auch so in Deinem Code, bitte mal den Thread Namen korrigieren.

Kann mir jemand einen Tip geben?

mit dem folgenden code funtioniert es nicht

#include "FastLED.h"
#define NUM_LEDS 26
#define DATA_PIN 2
#define CLOCK_PIN 3
CRGB leds[NUM_LEDS];

void setup()
{
	//FastLED.addLeds<LPD8806, DATA_PIN>(leds, NUM_LEDS);
	FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN>(leds, NUM_LEDS);
}

void loop() 
{
	leds[26] = CRGB::Red;
	FastLED.show();
	delay(100);
}

Wei soll das so auch klappen! Das was du da an Code bietest, ist nicht mehr als ein aufgeräumtes Libary Beispiel!

#include "FastLED.h"

// LED STRING 1
#define NUM_LEDS1 10
#define DATA_PIN1 2
#define CLOCK_PIN1 3
CRGB leds1[NUM_LEDS1];

// LED_STRING 2
#define NUM_LEDS2 10
#define DATA_PIN2 3
#define CLOCK_PIN2 4 // Bin mir nich sicher, ob Clock gleich sein darf und ob es nicht sogar der Hardware Clock(SCK) sein muss
CRGB leds2[NUM_LEDS2];

void setup()
{
	//FastLED.addLeds<LPD8806, DATA_PIN>(leds, NUM_LEDS); // Gibts den mit oder Ohne CLOCK?
	FastLED.addLeds<LPD8806, DATA_PIN1, CLOCK_PIN1>(leds1, NUM_LEDS1);
	FastLED.addLeds<LPD8806, DATA_PIN2, CLOCK_PIN2>(leds2, NUM_LEDS2);
}

void loop() 
{
memset(leds1, 0, NUM_LEDS1 * 3);
memset(leds2, 0, NUM_LEDS2 * 3);

for(int i = 0; i < 10; i++)
{
leds1[i] = CRGB(255, 0, 0);
leds2[2] = CRGB(0, 0, 255);
delay(100);
FastLED.show();
}

jo danke dir

wollte gerade schreiben das ich es geschaft habe.

trotzdem danke

und wieder eine Frage

ich erhalte immer folgende fehlermeldung:
too many arguments to function ‘void everyfith()’

#include "FastLED.h"
#include "colorfunction.h"
#define NUM_LEDS 26
#define DATA_PIN 2
#define CLOCK_PIN 3

CRGB leds[NUM_LEDS];

void everyfith(uint32_t c,uint32_t b);

void setup()
{
	FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN>(leds, NUM_LEDS);
}


void loop() 
{
	
  everyfith(BLUE, RED);

}

void everyfith(uint32_t c, uint32_t b)
{
	for (int i=0; i<NUM_LEDS;i++)
	{
		leds[i] = CRGB(b);
	}
	for (int j=5; j<NUM_LEDS; j=j+10)
	{
		for (int k=j; k<j+5;k++)
		{
			leds[k] = CRGB(c);
		}
	}

}

schreibe ich es ohne funktion, funktioniert es
ich sehe jetzt nur nicht den grund warum es nicht funktioniert

Entferne die Zeile

void everyfith(uint32_t c,uint32_t b);

ueber setup.

Und falls Du Interesse hast, auch zu sehen, was passiert, wuerde ich noch ein

FastLED.show();

in den Mainloop schreiben...

kommt dennoch die selbe fehlermeldung

Lichtdesignsteuerung.ino:25: error: stray '\357' in program
Lichtdesignsteuerung.ino:25: error: stray '\277' in program
Lichtdesignsteuerung.ino:25: error: stray '\275' in program
Lichtdesignsteuerung.ino:In function 'void loop()'
Lichtdesignsteuerung.ino:6: error: too many arguments to function 'void everyfith(uint32_t, uint32_t)'
Lichtdesignsteuerung.ino:20: error: at this point in file

also er hängt sich bei folgendem schon auf

#include "FastLED.h"
#include "colorfunction.h"
#define NUM_LEDS 26
#define DATA_PIN 2
#define CLOCK_PIN 3
CRGB leds[NUM_LEDS];


void setup()
{
	FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN>(leds, NUM_LEDS);
}


void loop() 
{
 everyfith();
}


void everyfith()
{
	for (int i=0; i<NUM_LEDS;i++)
	{
		leds[i] = CRGB(0,127,0); 
	}

}

Lichtdesignsteuerung.ino:25: error: stray ‘\357’ in program
Lichtdesignsteuerung.ino:25: error: stray ‘\277’ in program
Lichtdesignsteuerung.ino:25: error: stray ‘\275’ in program

Kommentiere

#include "colorfunction.h"

raus, da Du sie ja ohnehin nicht verwendest und um jeden aeusseren Fehler auszuschliessen. Was ist das ueberhaupt fuer eine lib? Quelle? Link?

Welche Version der Arduino IDE verwendest Du? Du brauchst min. 1.0.5. Welchen FastLED Branch? 2.1 Beta?

Das ist nicht der Fehler!

Der Fehler ist ‘0x8D’, ein Steuerzeichen aus dem Ascii Zeichenpool. Dieses befand sich nach der ersten geschweiften Klammer der Funktion everyfith. Scheinbar hat der Threadersteller einen Teil des Codes von irgendwo einfach 'ge’copy&pastet.

#include "FastLED.h"
//#include "colorfunction.h"
#define NUM_LEDS 26
#define DATA_PIN 2
#define CLOCK_PIN 3
CRGB leds[NUM_LEDS];


void setup()
{
	FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN>(leds, NUM_LEDS);
}


void loop() 
{
 everyfith();
}


void everyfith()
{
	for (int i=0; i<NUM_LEDS;i++)
	{
		leds[i] = CRGB(0,127,0); 
	}

}

doch die Header wird noch verwendet

ich benütze das Amtel Studio

ja das war es.
ich habe es aus meinem vorherigen Projekt mit der Original LPD8806 lib kopiert und nur angeglichen.
jetzt habe ich sie einfach neu geschrieben und es funktioniert.

vielen dank

Oh Mann, darauf waere ich nie gekommen...

Respekt @sschultewolter.

Vielleicht sollte ich beim Troubleshooting den Mund halten und einfach weiter Effekte programmieren... :wink:

Gruesse

Helmuth