WS2812b über PCA9685 an Arduino?

OP #7441080
Lesenswert?

Hallo zusammen, ich will für ein größeres Projekt viele WS2812b über einen Arduino Mega in Rot, Gelb und Orange zum Flackern bringen. Da es eben sehr viele sind und das Projekt ziemlich groß ist, wollte ich einen PCA9685 an den Arduino anhängen und an die Pins des PCA je 5 WS2812b anschließen. Das könnte ja theoretisch nach bedarf jederzeit mit einem oder mehreren weiteren PCA ergänzt werden. Ich habe dafür bereits einen Sketch geschrieben. Allerdings bin ich mir sicher, dass er nicht korrekt ist. Könnt ihr mir helfen, den Sketch zu berichtigen? Ein ganz anderes Problem ist dann auch noch, dass ich nicht sicher bin, ob WS2812b über einen PCA vom Arduino überhaupt angesteuert werden können. Ich habe dazu nichts brauchbares finden können. Weiß jemand dazu etwas?

Der Sketch:

#include <Wire.h> #include <Adafruit_PWMServoDriver.h> #include <Adafruit_NeoPixel.h>

#define LED_COUNT 1

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); // Erstellen Sie eine Instanz des PCA9685-Chips Adafruit_NeoPixel strip(LED_COUNT, 0, NEO_GRB + NEO_KHZ800);

void setup() { Serial.begin(9600); // Starten Sie die serielle Kommunikation pwm.begin(); // Starten Sie den PCA9685 pwm.setPWMFreq(800); // Legen Sie die PWM-Frequenz auf 800 Hz fest

strip.begin(); }

void loop() { strip.setPixelColor(0, strip.Color(239, 58, 51)); // Setze die Farbe des ersten Pixels auf Rot strip.show(); // Aktualisiere die LED delay(random(50, 500)); // Warte für eine zufällige Zeit zwischen 50 und 500 Millisekunden

strip.setPixelColor(0, strip.Color(245, 153, 52)); // Setze die Farbe des ersten Pixels auf Grün strip.show(); // Aktualisiere die LED delay(random(50, 500)); // Warte für eine zufällige Zeit zwischen 50 und 500 Millisekunden

strip.setPixelColor(0, strip.Color(245, 216, 52)); // Setze die Farbe des ersten Pixels auf Blau strip.show(); // Aktualisiere die LED delay(random(50, 500)); // Warte für eine zufällige Zeit zwischen 50 und 500 Millisekunden }

OP #7441105
Lesenswert?

Ja, ich weiß, wie WS2812b funktionieren. Der Sinn, sie über einen PCA anzusteuern ist die Flexibilität. Im Optimalfall sind nicht alle gleichzeitig an, sondern die WS2812b wechseln sich ab. Einige der PCA Pins sind aktiv, andere nicht. Das ganze soll in ein 3D Modell installiert werden, weshalb die Pin auch noch den Zweck haben, möglichst viel Übersicht zu haben, welche WS2812b sich in welchem Gebäude befindet. Außerdem sollte dadurch auch bei einer größeren Anzahl von WS2812b die Geschwindigkeit der Datenübertragung nicht so stark nachlassen. So waren zumindest meine Überlegungen. Macht das keinen Sinn?

OP #7441106
Lesenswert?

Jörg R. schrieb:

Du weißt aber schon wie WS2812B funktionieren? Ich verstehe den Sinn deines Vorhabens nicht.

Ja, ich weiß, wie WS2812b funktionieren. Der Sinn, sie über einen PCA anzusteuern ist die Flexibilität. Im Optimalfall sind nicht alle gleichzeitig an, sondern die WS2812b wechseln sich ab. Einige der PCA Pins sind aktiv, andere nicht. Das ganze soll in ein 3D Modell installiert werden, weshalb die Pin auch noch den Zweck haben, möglichst viel Übersicht zu haben, welche WS2812b sich in welchem Gebäude befindet. Außerdem sollte dadurch auch bei einer größeren Anzahl von WS2812b die Geschwindigkeit der Datenübertragung nicht so stark nachlassen. So waren zumindest meine Überlegungen. Macht das keinen Sinn?

#7441114
Lesenswert?

Kira P. schrieb:

Jörg R. schrieb:

Du weißt aber schon wie WS2812B funktionieren? Ich verstehe den Sinn deines Vorhabens nicht.

Ja, ich weiß, wie WS2812b funktionieren. Der Sinn, sie über einen PCA anzusteuern ist die Flexibilität. Im Optimalfall sind nicht alle gleichzeitig an, sondern die WS2812b wechseln sich ab. Einige der PCA Pins sind aktiv, andere nicht. Das ganze soll in ein 3D Modell installiert werden, weshalb die Pin auch noch den Zweck haben, möglichst viel Übersicht zu haben, welche WS2812b sich in welchem Gebäude befindet. Außerdem sollte dadurch auch bei einer größeren Anzahl von WS2812b die Geschwindigkeit der Datenübertragung nicht so stark nachlassen. So waren zumindest meine Überlegungen. Macht das keinen Sinn?

Du kannst Doch 100 Stück (um eine Zahl zu nennen) WS2812B hintereinander schalten, aber nur eine davon leuchten lassen. Es ist doch nur Sache der Programmierung.

Der PCA9685 wäre zudem eher nicht geeignet. Das ist ein LED-Treiber der LEDs per PWM bedient. Du müsstest ja das Datensignal für die WS2812B durchreichen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren