37款傳感器與執行器的提法,在網絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止這37種的。鑒於本人手頭積累了一些傳感器和執行器模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流為目的,這里准備逐一動手嘗試系列實驗,不管成功(程序走通)與否,都會記錄下來---小小的進步或是搞不掂的問題,希望能夠拋磚引玉。
【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
實驗六十: 直條8位 WS2812B 5050 RGB LED內置全彩驅動彩燈模塊

WS2812B芯片
是一個集控制電路與發光電路於一體的智能外控LED光源。其外型與一個5050LED燈珠相同,每個元件即為一個像素點。像素點內部包含了智能數字接口數據鎖存信號整形放大驅動電路,還包含有高精度的內部振盪器和12V高壓可編程定電流控制部分,有效保證了像素點光的顏色高度一致。數據協議采用單線歸零碼的通訊方式,像素點在上電復位以后,DIN端接受從控制器傳輸過來的數據,首先送過來的24bit數據被第一個像素點提取后,送到像素點內部的數據鎖存器,剩余的數據經過內部整形處理電路整形放大后通過DO端口開始轉發輸出給下一個級聯的像素點,每經過一個像素點的傳輸,信號減少24bit。像素點采用自動整形轉發技術,使得該像素點的級聯個數不受信號傳送的限制,僅僅受限信號傳輸速度要求。





WS2812主要特點
1、智能反接保護,電源反接不會損壞IC。
2、IC控制電路與LED點光源公用一個電源。
3、控制電路與RGB芯片集成在一個5050封裝的元器件中,構成一個完整的外控像素點。
4、內置信號整形電路,任何一個像素點收到信號后經過波形整形再輸出,保證線路波形畸變不會累加。
5、內置上電復位和掉電復位電路。
6、每個像素點的三基色顏色可實現256級亮度顯示,完成16777216種顏色的全真色彩顯示,掃描頻率不低於400Hz/s。
7、串行級聯接口,能通過一根信號線完成數據的接收與解碼。
8、任意兩點傳傳輸距離在不超過5米時無需增加任何電路。
9、當刷新速率30幀/秒時,級聯數不小於1024點。
10、數據發送速度可達800Kbps。
11、光的顏色高度一致,性價比高。

WS2812應用領域
具有低電壓驅動,環保節能,亮度高,散射角度大,一致性好,超低功率,超長壽命等優點。將控制電路集成於LED上面,電路變得更加簡單,體積小,安裝更加簡便。主要應用領域,LED全彩發光字燈串,LED全彩模組, LED全彩軟燈條硬燈條,LED護欄管。LED點光源,LED像素屏,LED異形屏,各種電子產品,電器設備跑馬燈等。

直條8位 WS2812B 5050 RGB LED內置全彩驅動彩燈模塊
型號:LED L1 V2
尺寸:62*12mm
芯片:WS2812(內置於LED)
LED:5050封裝RGB全彩高亮*8
電壓:5V
端口:數字
平台: 單片機

模塊主要特點
1、5050高亮LED,內置控制芯片,僅需1個IO口即可控制多個LED模塊
2、芯片內置整形電路,信號畸變不會累計,穩定顯示
3、三基色256級亮度調劑,16萬色真彩顯示效果,掃描頻率不低於400Hz/S
4、串行級聯接口,能通過一根信號線完成數據的接收與解碼
5、刷新速率30幀/秒時,低速連級模式連級數不小於512點
6、數據收發速度最高可達800Kbps
7、高亮LED,光色亮度一致性高
8、兩端有連級接口,可以直接插接

模塊電原理圖

實驗開源代碼
/*
【Arduino】168種傳感器模塊系列實驗(60)
實驗六十: 直條8位 WS2812B 5050 RGB LED內置全彩驅動彩燈模塊
實驗一,點亮ws2812直條LED
*/
#include <Adafruit_NeoPixel.h>
#define PIN 6
#define MAX_LED 8
#define ADD true
#define SUB false
int val = 0;
boolean stat = ADD;
Adafruit_NeoPixel strip = Adafruit_NeoPixel( MAX_LED, PIN, NEO_RGB + NEO_KHZ800 );
void setup()
{
strip.begin();
strip.show();
}
void loop()
{
uint8_t i,a=0;
uint32_t color = strip.Color(0, 100, 255);
while(a<10)
{
for(i=0;i<9;i++)
{
if(i==a) strip.setPixelColor(i, color);
else strip.setPixelColor(i, 0);
}
strip.show();
delay(20);
a++;
}
}

/*
【Arduino】168種傳感器模塊系列實驗(60)
實驗六十: 直條8位 WS2812B 5050 RGB LED內置全彩驅動彩燈模塊
實驗程序之二,依次點亮不同色彩燈
*/
#include <FastLED.h>
#define LED_PIN 6
#define NUM_LEDS 8
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(500);
leds[1] = CRGB(0, 255, 0);
FastLED.show();
delay(500);
leds[2] = CRGB(0, 0, 255);
FastLED.show();
delay(500);
leds[3] = CRGB(150, 0, 255);
FastLED.show();
delay(500);
leds[4] = CRGB(255, 200, 20);
FastLED.show();
delay(500);
leds[5] = CRGB(85, 60, 180);
FastLED.show();
delay(500);
leds[6] = CRGB(50, 255, 20);
FastLED.show();
delay(500);
leds[7] = CRGB(150, 50, 60);
FastLED.show();
delay(500);
}

/*
【Arduino】66種傳感器模塊系列實驗(61)
實驗六十一: 直條8位 WS2812B 5050 RGB LED內置全彩驅動彩燈模塊
實驗程序之三,簡單漸變彩虹色
*/
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 6
#define NUMPIXELS 8
float RDE1=0;
float GRE1=0;
float BLE1=0;
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int delayval = 500;
void setup() {
#if defined (__AVR_ATtiny85__)
if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
pixels.begin();
}
void loop() {
GRE1=0;
for(int o=0;o<255;o++){
RDE1=255;
GRE1=GRE1+1;
BLE1=0;
for(int l=0;l<NUMPIXELS;l++){
pixels.setPixelColor(l, pixels.Color(RDE1,GRE1,BLE1));
pixels.show();
}
delay(20);
}
RDE1=255;
for(int p=0;p<255;p++){
RDE1=RDE1-1;
GRE1=255;
BLE1=0;
for(int l=0;l<NUMPIXELS;l++){
pixels.setPixelColor(l, pixels.Color(RDE1,GRE1,BLE1));
pixels.show();
}
delay(20);
}
BLE1=0;
for(int k=0;k<255;k++){
RDE1=0;
GRE1=255;
BLE1=BLE1+1;
for(int l=0;l<NUMPIXELS;l++){
pixels.setPixelColor(l, pixels.Color(RDE1,GRE1,BLE1));
pixels.show();
}
delay(20);
}
GRE1=255;
for(int k=0;k<255;k++){
RDE1=0;
GRE1=GRE1-1;
BLE1=255;
for(int l=0;l<NUMPIXELS;l++){
pixels.setPixelColor(l, pixels.Color(RDE1,GRE1,BLE1));
pixels.show();
}
delay(20);
}
RDE1=0;
for(int h=0;h<150;h++){
RDE1=RDE1+1;
GRE1=0;
BLE1=255;
for(int l=0;l<NUMPIXELS;l++){
pixels.setPixelColor(l, pixels.Color(RDE1,GRE1,BLE1));
pixels.show();
}
delay(20);
}
}
實驗開源圖形編程(Mind+)

實驗開源仿真編程(linkboy)


