28-12-2021, 17:08
Witam szanowne grono po Świętach.
Mam problem z efektem na WS2812B, biblioteka Neopixel, diody zapalają się z krańców taśmy do środka i to jest ok. Chciałbym móc go podzielić na sekcje, tzn. mając np. 24 diody efekt powtarza się 3 razy na 8 diodach. Powiedzmy, że ilość sekcji i diod będę definiował i stąd moja prośba o pomoc, gdyż za diabła nie mogę sobie z tym poradzić.
Poniżej wklejam kod który używam do testowania pojedynczych efektów, działa on na serialu.
Z góry dzięki za pomoc.
Mam problem z efektem na WS2812B, biblioteka Neopixel, diody zapalają się z krańców taśmy do środka i to jest ok. Chciałbym móc go podzielić na sekcje, tzn. mając np. 24 diody efekt powtarza się 3 razy na 8 diodach. Powiedzmy, że ilość sekcji i diod będę definiował i stąd moja prośba o pomoc, gdyż za diabła nie mogę sobie z tym poradzić.
Poniżej wklejam kod który używam do testowania pojedynczych efektów, działa on na serialu.
Z góry dzięki za pomoc.
Kod:
char incomingByte;
#include <Adafruit_NeoPixel.h>
#define LED_PIN 9
// How many NeoPixels are attached to the Arduino ?
#define NUMPIXELS 24
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
Serial.begin(9600);
Serial.println("LED control");
Serial.println("0 = LED off");
Serial.println("1 = Do srodka");
strip.begin();
strip.show(); // initialize all pixels to "off"
}
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.read();
if (incomingByte == '0') {
Serial.println("off");
off();
}
if (incomingByte == '1') {
Serial.println("Do srodka");
dosrodka();
}
}
}
void off() {
strip.clear();
strip.show();
}
void calosc() {
dosrodka();
}
void dosrodka() {
//Ascend strip
//for (int i = NUMPIXELS / 2; i >= 0; i--) {
for (int i = 0; i < (NUMPIXELS / 2) + 1; i++) {
strip.setPixelColor(i, strip.Color(255, 255, 255));
strip.setPixelColor(NUMPIXELS - i, strip.Color(255, 255, 255));
strip.show();
delay(80);
}
}