Arduino爱好者

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: eagler8

【Arduino】168种传感器系列实验(36)--- WS2812B 4位彩灯模块

[复制链接]
 楼主| 发表于 2019-6-24 17:23 | 显示全部楼层
模块引脚
VCC---这个引脚需要由一个5V-7V的直流电源接入。电压过高(7V)的话会烧毁LED,电压太低(5V)的话则会造成亮度过低,甚至造成LED不工作。

GND---公共引脚,接地,即接电源的负极。

IN---微控制器(或者是另外一个WS2812)的数据从这个引脚传入LED。

OUT---数据从这里输出给下一级的WS2812,如果这个WS2812是最后一级,则可直接悬空此引脚。
04 (1).jpg


 楼主| 发表于 2019-6-24 18:12 | 显示全部楼层
下载WS2812驱动库Adafruit_NeoPixel,有二链接;
https://github.com/adafruit/Adafruit_NeoPixel
https://www.tuicool.com/articles/IbaAJbE

好像需要三个库,以适应不同情况下的使用
Adafruit_GFX
Adafruit_NeoPixel
Adafruit_NeoMatrix

解压缩每个库,从文件夹名称中删除“-master”并将它们移动到Arduino库文件夹libraries里面。重新启动Arduino IDE以加载库。


02-.jpg

 楼主| 发表于 2019-6-24 19:01 | 显示全部楼层
06.jpg
 楼主| 发表于 2019-6-24 19:04 | 显示全部楼层
本帖最后由 eagler8 于 2020-10-9 10:41 编辑

第一个实验:一只LED的呼吸灯

  1. /*
  2. 【Arduino】37种传感器模块系列实验(36)
  3. 实验三十六:WS2812B智能外控集成LED四位彩灯模块(内置驱动IC)之一
  4. */

  5. #include <Adafruit_NeoPixel.h>
  6. #define PIN 6
  7. #define MAX_LED 1
  8. #define ADD true
  9. #define SUB false

  10. int val = 0;
  11. boolean stat = ADD;

  12. Adafruit_NeoPixel strip = Adafruit_NeoPixel( MAX_LED, PIN, NEO_RGB + NEO_KHZ800 );

  13. void setup(){
  14.   strip.begin();
  15.   strip.show();
  16. }

  17. void loop(){
  18.   uint32_t color = strip.Color(val, val, val);
  19.   strip.setPixelColor(0, color);
  20.   
  21.   if(val>=235)
  22.     stat = SUB;
  23.   if(val<=0)
  24.     stat = ADD;
  25.   
  26.   strip.show();
  27.   delay(15);
  28.   if(stat==SUB) val --;
  29.   else if(stat==ADD) val++;
  30. }
复制代码

 楼主| 发表于 2019-6-24 19:22 | 显示全部楼层
本帖最后由 eagler8 于 2020-10-9 10:41 编辑

第二个实验:四只LED轮流全彩快闪

  1. /*
  2. 【Arduino】37种传感器模块系列实验(36)
  3. 实验三十六:WS2812B智能外控集成LED四位彩灯模块(内置驱动IC)之二
  4. */

  5. #include <Adafruit_NeoPixel.h>

  6. #define PIN 6
  7. #define MAX_LED 4

  8. #define ADD true
  9. #define SUB false

  10. int val = 0;
  11. boolean stat = ADD;

  12. Adafruit_NeoPixel strip = Adafruit_NeoPixel( MAX_LED, PIN, NEO_RGB + NEO_KHZ800 );

  13. void setup()
  14. {
  15.   strip.begin();           
  16.   strip.show();           
  17. }

  18. void loop()
  19. {
  20.   uint8_t i,a=0;                                       
  21.   uint32_t color = strip.Color(0, 100, 255);        
  22.   while(a<10)
  23.   {
  24.       for(i=0;i<9;i++)
  25.       {
  26.         if(i==a) strip.setPixelColor(i, color);     
  27.         else strip.setPixelColor(i, 0);            
  28.       }
  29.        strip.show();                                
  30.        delay(30);                                   
  31.        a++;                                         
  32.   }
  33. }
复制代码

 楼主| 发表于 2019-6-24 19:39 | 显示全部楼层
本帖最后由 eagler8 于 2020-10-9 10:42 编辑

第三个实验:循序点亮四只绿色光LED

  1. /*
  2. 【Arduino】37种传感器模块系列实验(36)
  3. 实验三十六:WS2812B智能外控集成LED四位彩灯模块(内置驱动IC)之三
  4. */

  5. #include <Adafruit_NeoPixel.h>
  6. #ifdef __AVR__
  7. #include <avr/power.h>
  8. #endif

  9. #define PIN            6
  10. #define NUMPIXELS      4

  11. Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

  12. int delayval = 500;

  13. void setup() {

  14. #if defined (__AVR_ATtiny85__)
  15.   if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
  16. #endif

  17.   pixels.begin();
  18. }

  19. void loop() {

  20.   for(int i=0;i<NUMPIXELS;i++){

  21.     pixels.setPixelColor(i, pixels.Color(0,150,0));

  22.     pixels.show();

  23.     delay(delayval);

  24.   }
  25. }
复制代码

 楼主| 发表于 2019-6-24 19:56 | 显示全部楼层
09.jpg
 楼主| 发表于 2019-9-1 14:30 | 显示全部楼层
10.jpg
 楼主| 发表于 2019-9-15 12:17 | 显示全部楼层

谢谢鼓励
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino爱好者

GMT+8, 2022-12-8 23:11 , Processed in 0.074800 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表