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 }
:
Verschoben durch Moderator
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?
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?
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.
:
Bearbeitet durch User
Kira P. schrieb: > Macht das keinen Sinn? Nein, das ergibt keinen Sinn. Um an eine WS2812 ein Bit zu übertragen braucht es ~1¼µs. Bei 24b mithin 30µs. Tausend LEDs in Reihe brauchen also nur 30ms. Und man kann einzelne im Strang auch ausschalten! ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.