在 arduino 上运行 WS2812B 条带
Posted
技术标签:
【中文标题】在 arduino 上运行 WS2812B 条带【英文标题】:Running WS2812B strip on arduino 【发布时间】:2021-01-02 21:39:46 【问题描述】:我购买了一条 5 米长的 WS2812B LED 灯带,用于与运动检测器(WS2812B 5 Pins RGBW RGBWW 4 IN 1 LED Strip Light Non-Waterproof DC5V)结合使用。
这些条连接到 5V 电源(USB 移动电源)和 arduino UNO 上引脚 6 上的 GND/5V/信号。
我要注意的是,我到目前为止还没有剪掉LED灯条,所以5米都是完好的。
我已经尝试使用 FASTLED 库使用下面的代码让 LED 发出简单的颜色。蓝色/蓝色/蓝色组合导致 LED 0-2 上的颜色为蓝色/红色/绿色 更改为红色/红色/红色会产生黄色/蓝色/关闭 更改为 Green/Green/Green 会产生 Red/lightgreen-ish/off 的颜色 我已尝试从 RGB 转换为 RBG 配色方案,但无济于事 除了我已经为您提供的信息之外,我没有太多关于 LED 灯条的信息你能给我一些关于如何进行的想法吗?
#include "FastLED.h"
#define NUM_LEDS 5
#define DATA_PIN 6
// Define the array of leds
CRGB leds[NUM_LEDS];
void setup()
//FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS); // for GRB LEDs
void loop()
leds[0] = CRGB::Blue;
leds[1] = CRGB::Blue;
leds[2] = CRGB::Blue;
FastLED.show();
delay(500);
【问题讨论】:
【参考方案1】:这可能不是您正在寻找的确切答案,但我建议为您的 LED 使用 Adafruit_Neopixel.h 库。刚刚使用该库和您正在使用的确切 LED 灯条做了一个 Projekt,到目前为止它运行良好。
#include "Adafruit_NeoPixel.h"`
#define LED_PIN 6
#define LED_COUNT 60
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
int red = 100;
int green = 0;
int blue = 0;
void setup()
strip.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
strip.show(); // Turn OFF all pixels ASAP
void loop()
for (i=0; i<LED_COUNT; i++)
strip.setPixelColor(i, strip.Color(Red, Green, Blue));
strip.show();
这应该使 60 个 LED 变为红色。如果你想查看的话,我的 GitHub 页面上也有一个 LED 项目。如果上面的代码仍然不起作用,我认为你的接线是错误的。我用电源为我的芯片和 LED 供电,并使用电源的接地。
【讨论】:
我已经尝试过您的代码,但它没有产生预期的颜色。原来我有一个 RGBW 条带。所以每个 LED 有四个像素:红色、绿色、蓝色和白色......如果我指示 neopixel 库使用这种类型的 LED 灯条,一切似乎都可以工作......我现在希望能够设置褪色 - 是这是我应该在新帖子中发布的东西,还是应该继续使用它。 我会把这个问题放到一个新帖子中,因为它是一个完全不同的问题。您肯定需要 for 循环,您只是想将其淡化为白色还是其他颜色? 最后,我希望使用 PIR 运动传感器来触发 LED 灯带以非常低的强度轻轻打开 - 足以在夜间沿着走廊导航。然后在设定的时间后通过柔和地淡出红灯来转动。现在我已将最大亮度设置为 5(共 255 个),因此使用传统的 for 循环将几个步骤设置为零会使褪色看起来非常笨拙。以上是关于在 arduino 上运行 WS2812B 条带的主要内容,如果未能解决你的问题,请参考以下文章
在线仿真Arduino WS2812b环形24颗霓虹灯动态效果显示
在线仿真Arduino WS2812b环形24颗霓虹灯动态效果显示