FastLED с WS2812B 241228
Привет, форум Arduino Stack Exchange,
Изучаем, как использовать FastLED для управления цепочкой из 150 светодиодов WS2812B
Приведенный ниже код компилируется и работает так, как и ожидалось.
Пытаюсь разобраться, как включить светодиоды разных цветов, скажем, чередование зеленого и красного.
Спасибо.
Аллен Питтс Даллас, Техас
P.S. Какой суффикс CRGB стоит перед тремя трехзначными числами, которые определяют цвет?
/*
from How To Control WS2812B Individually Addressable LEDs using Arduino
https://howtomechatronics.com/tutorials/arduino/how-to-control-ws2812b-individually-addressable-leds-using-arduino/
In this sketch first learned how to turn on twenty LEDs using statements for
each LED. Then figured out how to turn them off: "leds[i] = (0, 0, 0);"
The learned how to turn them on using FOR staement.
Next step Learn how to turn the LEDs on having different colors.
Last change: NUM_LEDS to 150 and
for (int i = 0; i < 150; i++) {
// turn off
This works on the LED strip marked "Alito WS2812B"
*/
#include <FastLED.h>
#define LED_PIN 3
#define NUM_LEDS 150
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
}
void loop() {
/*
leds[0] = CRGB(255, 0, 0);
FastLED.show();
delay(100);
leds[1] = CRGB(0, 255, 0);
FastLED.show();
delay(100);
leds[2] = CRGB(0, 0, 255);
FastLED.show();
delay(100);
leds[3] = CRGB(150, 0, 255);
FastLED.show();
delay(100);
leds[4] = CRGB(255, 200, 20);
FastLED.show();
delay(100);
leds[5] = CRGB(85, 60, 180);
FastLED.show();
delay(100);
leds[6] = CRGB(50, 255, 20);
FastLED.show();
leds[7] = CRGB(255, 0, 0);
FastLED.show();
delay(100);
leds[8] = CRGB(0, 255, 0);
FastLED.show();
delay(100);
leds[9] = CRGB(0, 0, 255);
FastLED.show();
delay(100);
leds[10] = CRGB(150, 0, 255);
FastLED.show();
delay(100);
leds[11] = CRGB(255, 200, 20);
FastLED.show();
delay(100);
leds[12] = CRGB(85, 60, 180);
FastLED.show();
delay(100);
leds[13] = CRGB(50, 255, 20);
FastLED.show();
leds[14] = CRGB(0, 255, 0);
FastLED.show();
delay(100);
leds[15] = CRGB(0, 0, 255);
FastLED.show();
delay(100);
leds[16] = CRGB(150, 0, 255);
FastLED.show();
delay(100);
leds[17] = CRGB(255, 200, 20);
FastLED.show();
delay(100);
leds[18] = CRGB(85, 60, 180);
FastLED.show();
delay(100);
leds[19] = CRGB(50, 255, 20);
FastLED.show();
*/
for (int i = 0; i < 60; i++) {
// turn on
leds[i] = CRGB(0, 255, 0);
// Show the leds
FastLED.show();
delay(50);
}
for (int i = 0; i < 150; i++) {
// turn off
leds[i] = CRGB(0, 0, 0);
// Show the leds
FastLED.show();
delay(10);
}
}
@user2911480, 👍-1
Обсуждение1 ответ
CRGB, по-видимому, представляет собой структуру, которая по сути хранит значения красного, зеленого и синего для пикселя.
Из pixeltypes.h в библиотеке FastLED:
/// Представление пикселя RGB (красный, зеленый, синий)
struct CRGB {
union {
struct {
union {
uint8_t r;
uint8_t red;
};
union {
uint8_t g;
uint8_t green;
};
union {
uint8_t b;
uint8_t blue;
};
};
uint8_t raw[3];
};
Что касается остальной части вашего вопроса, то там, по сути, нет вопроса. Чтобы получить ответ, вам нужно задать вопрос, указав:
- Что вы пытались
- То, чего вы ожидали
- Что на самом деле произошло
Вы сказали:
Приведенный ниже код компилируется и работает так, как и ожидалось.
Поэтому дальше сложно двигаться. Код компилируется и работает, так в чём проблема?
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- avrdude ser_open() can't set com-state
- Как подключиться к Arduino с помощью WiFi?
- Mac OSX Yosemite не отображает последовательные порты для Uno R3
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
Что происходит при запуске кода?, @Nick Gammon
Массив
leds[]— это *в памяти* представление реальных светодиодов... заполните массив значениями цветов, а затем вызовитеFastLED.show();, чтобы скопировать массив в светодиодную ленту... ваш вопрос не об Arduino... это общий вопрос по программированию, @jsotolaисследуйте
for (int i = 0; i < 150; i++) {... узнайте, что он делает ... он находится в мире программирования на C++, @jsotola