Arduino 控制WS2812 LED灯条
传统的LED限制总是很多,比如需要很多的引脚。所以有一种很好的解决方案是用灯条。理论上这种灯条可以通过通讯,用一根数据总线可以控制达到无上限个数的RGB-LED灯珠,并且在数量在1024以下时,延迟是不可察觉的(使用手册可查)。
主要功能
通过Arduino IDE 代码输入R,G,B不同值的组合,让LED灯条产生不同的颜色;这个程序将让LED实现颜色的随机变换。
工作模式
所需库文件是Adafruit_NeoPixel.h,可以在Arduino 库管理器中下载。
组件
– 1 * Adeept UNO板
– 1 * USB电缆
– 1 * WS2812LED灯条
– 1 *跳线
程序
步骤1:如下图所示连接电路。
步骤2:上传程序
- 下载库文件h。
- 该函数led_numbers中,控制的是点亮多少个全彩灯珠,如果你想改变灯珠点亮的个数你可以在这里进行修改。PIN表示的是与开发板所连的第几个端口。
- 关于NEO_GRB+NEO_KHZ800,这说明了与开发板所连的灯条的具体类型,如果你所使用的灯珠花样不同请选用NEO_KHZ400+NEO_RGB。
- begin()准备对灯条进行数据发送;关于strip.setBrightness()这个函数其主要是对灯珠亮度进行输出,最大值为255。
- 设置R,G,B的值为随机的数,从而产生随机的颜色;setPixelColor(i, color);在这个函数中i表示的是第几个灯珠进行点亮,函数中strip.Color(R, G, B);是对灯条的颜色进行设置;strip.show();这个函数是对上述的颜色的设置进行一次输出。
/************************************* File name:Adeept_led_strip Description: Website:www.addept.com E-mail:support@addept.com Author:felix Date:2019/6/18 *************************************/ #include <Adafruit_NeoPixel.h> #define led_numbers 12 #define PIN 8 Adafruit_NeoPixel strip = Adafruit_NeoPixel(led_numbers, PIN, NEO_GRB + NEO_KHZ800);//NEO_KHZ400+NEO_RGB void setup() { strip.begin(); strip.setBrightness(50); } void loop() { int R=random(0,255); int G=random(0,255); int B=random(0,255); for(int i=0;i<12;i++){ strip.setPixelColor(i,strip.Color(R,G,B)); strip.show(); delay(50); } }
步骤3:实验效果: