规格:
1、LED數量:一米60燈60段;
2、光源:SMD 5050 LED;
3、板材:FPCB;
4、IC型号:WS2811,(1米60顆IC,1個IC控制1顆LED燈);
5、灰度等级:256级,(1米60個像素點);
6、發光角度:180°;
7、發光顏色:可以通過IC控制RGB調和顏色;
8、標準工作電壓: DC 5V;
9、功率: 18W ±10% / 米;
根據文件
https://learn.sparkfun.com/tutorials/ws2812-breakout-hookup-guide
可以在5V跟Gnd之間下一個100~1000uF的電容
在Din跟arduino之間放一個220~470歐姆的電阻
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 4
#define NUMPIXELS 16
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int delayval = 60;
// 串 的 16 點字模,每行 16 點, 2 進位取值,記錄成 2 個 8 位元字符,連續 16 行
unsigned char value[16][2] = {{0x00,0x00},{0x00,0xC0},{0x08,0x88},{0x0F,0xFC},{0x08,0x88},{0x08,0x88},{0x0F,0xF8},{0x08,0x88},{0x20,0x82},{0x3F,0xFF},{0x20,0x82},{0x20,0x82},{0x3F,0xFE},{0x20,0x82},{0x00,0x80},{0x00,0x80}};
unsigned char mask[8] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
unsigned char val;
void setup() {
// put your setup code here, to run once:
//Serial.begin(9600);
pixels.begin();
}
void loop() {
for(int b=0;b<2;b++){
for(int c=0;c<8;c++){
for(int a=0;a<16;a++){
val = value[a][b] & mask[c];
if(val==0){
pixels.setPixelColor(a, pixels.Color(0,0,0));
}else{
pixels.setPixelColor(a, pixels.Color(0,150,0));
}
}
pixels.show();
delay(delayval);
for(int a=0;a<16;a++){
pixels.setPixelColor(a, pixels.Color(0,0,0));
}
pixels.show();
}
}
delay(1000);
}
施做隨機漸變的燈光效果
#include <Adafruit_NeoPixel.h>
#define PIN 2
#define NUMPIXELS 8
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int r=0,g=0,b=0,prer=0,preg=0,preb=0,dr=0,dg=0,db=0;
int splitNum=100;
unsigned long startTime;
unsigned long nowTime;
int valdelay=2;
void setup() {
randomSeed(analogRead(A0));
Serial.begin(115200);
pixels.begin();
pixels.setBrightness(16);
}
void loop() {
turnRand();
}
void turnRand(){
r=random(0, 255);
g=random(0, 255);
b=random(0, 255);
showLeds();
}
void showLeds(){
for(int a=0;a<splitNum;a++){
dr=prer+((r-prer)*a)/splitNum;
dg=preg+((g-preg)*a)/splitNum;
db=preb+((b-preb)*a)/splitNum;
for(int i=1;i<=NUMPIXELS;i++){
pixels.setPixelColor(i%NUMPIXELS, pixels.Color(dr,dg,db));
pixels.show();
delay(valdelay);
}
}
prer=r;preg=g;preb=b;
}