37款傳感器與執(zhí)行器的提法溢陪,在網(wǎng)絡(luò)上廣泛流傳,其實(shí)Arduino能夠兼容的傳感器模塊肯定是不止這37種的。鑒于本人手頭積累了一些傳感器和執(zhí)行器模塊,依照實(shí)踐出真知(一定要動手做)的理念功氨,以學(xué)習(xí)和交流為目的,這里準(zhǔn)備逐一動手嘗試系列實(shí)驗(yàn)手幢,不管成功(程序走通)與否捷凄,都會記錄下來---小小的進(jìn)步或是搞不掂的問題,希望能夠拋磚引玉围来。
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
實(shí)驗(yàn)八十六:WS2812B-4*4位 RGB LED 全彩驅(qū)動16位彩燈開發(fā)板模塊
WS2812B
是一個集控制電路與發(fā)光電路于一體的智能外控LED光源跺涤。其外型與一個5050LED燈珠相同,每個元件即為一個像素點(diǎn)监透。像素點(diǎn)內(nèi)部包含了智能數(shù)字接口數(shù)據(jù)鎖存信號整形放大驅(qū)動電路桶错,還包含有高精度的內(nèi)部振蕩器和12V高壓可編程定電流控制部分,有效保證了像素點(diǎn)光的顏色高度一致胀蛮。數(shù)據(jù)協(xié)議采用單線歸零碼的通訊方式院刁,像素點(diǎn)在上電復(fù)位以后,DIN端接受從控制器傳輸過來的數(shù)據(jù)粪狼,首先送過來的24bit數(shù)據(jù)被第一個像素點(diǎn)提取后退腥,送到像素點(diǎn)內(nèi)部的數(shù)據(jù)鎖存器,剩余的數(shù)據(jù)經(jīng)過內(nèi)部整形處理電路整形放大后通過DO端口開始轉(zhuǎn)發(fā)輸出給下一個級聯(lián)的像素點(diǎn)再榄,每經(jīng)過一個像素點(diǎn)的傳輸狡刘,信號減少24bit。像素點(diǎn)采用自動整形轉(zhuǎn)發(fā)技術(shù)困鸥,使得該像素點(diǎn)的級聯(lián)個數(shù)不受信號傳送的限制颓帝,僅僅受限信號傳輸速度要求。
主要特點(diǎn)
● 智能反接保護(hù)窝革,電源反接不會損壞IC购城。
● IC控制電路與LED點(diǎn)光源公用一個電源。
● 控制電路與RGB芯片集成在一個5050封裝的元器件中虐译,構(gòu)成一個完整的外控像素點(diǎn)瘪板。
● 內(nèi)置信號整形電路,任何一個像素點(diǎn)收到信號后經(jīng)過波形整形再輸出漆诽,保證線路波形畸變不會累加侮攀。
● 內(nèi)置上電復(fù)位和掉電復(fù)位電路。
● 每個像素點(diǎn)的三基色顏色可實(shí)現(xiàn)256級亮度顯示厢拭,完成16777216種顏色的全真色彩顯示兰英,掃描頻率不低于400Hz/s。
● 串行級聯(lián)接口供鸠,能通過一根信號線完成數(shù)據(jù)的接收與解碼畦贸。
● 任意兩點(diǎn)傳傳輸距離在不超過5米時無需增加任何電路。
● 當(dāng)刷新速率30幀/秒時,級聯(lián)數(shù)不小于1024點(diǎn)薄坏。
● 數(shù)據(jù)發(fā)送速度可達(dá)800Kbps趋厉。
● 光的顏色高度一致,性價比高胶坠。
WS2812B-4*4位 RGB LED 全彩驅(qū)動16位彩燈開發(fā)板模塊
5050高亮LED君账,內(nèi)置控制芯片,僅需1個IO口即可控制多個LED
芯片內(nèi)置整形電路沈善,信號畸變不會累計乡数,穩(wěn)定顯示
三基色256級亮度調(diào)劑,16萬色真彩顯示效果闻牡,掃描頻率不低于400Hz/S
串行連級接口净赴,能通過一根信號線完成數(shù)據(jù)的接收與解碼
刷新速率30幀/秒時,低速連級模式連級數(shù)不小于512點(diǎn)
數(shù)據(jù)收發(fā)速度最高可達(dá)800Kbps
高亮LED澈侠,光色亮度一致性高
兩端有l(wèi)聯(lián)級接口,可以直接插接
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
實(shí)驗(yàn)八十六: WS2812B-4*4位 RGB LED 全彩驅(qū)動16位彩燈開發(fā)板
項目一埋酬,點(diǎn)亮矩陣LED模塊哨啃,循環(huán)快閃綠色光
實(shí)驗(yàn)開源代碼
/*
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
實(shí)驗(yàn)八十六: WS2812B-4*4位 RGB LED 全彩驅(qū)動16位彩燈開發(fā)板
項目一,點(diǎn)亮矩陣LED模塊写妥,循環(huán)快閃綠色光
*/
#include <Adafruit_NeoPixel.h>
#define PIN 7
#define MAX_LED 16
#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(255, 100, 0);
while(a<17) {
for(i=0;i<16;i++) {
if(i==a) strip.setPixelColor(i, color);
else strip.setPixelColor(i, 0);
}
strip.show();
delay(20);
a++;
}
}
實(shí)驗(yàn)場景圖
/*
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
實(shí)驗(yàn)八十六: WS2812B-4*4位 RGB LED 全彩驅(qū)動16位彩燈開發(fā)板
項目二拳球,依次點(diǎn)亮不同色彩燈
*/
#include <FastLED.h>
#define LED_PIN 7
#define NUM_LEDS 16
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(150, 255, 20);
FastLED.show();
delay(500);
leds[7] = CRGB(0, 50, 255);
FastLED.show();
delay(500);
leds[8] = CRGB(255, 255, 0);
FastLED.show();
delay(500);
leds[9] = CRGB(20, 25, 255);
FastLED.show();
delay(500);
leds[10] = CRGB(255, 0, 20);
FastLED.show();
delay(500);
leds[11] = CRGB(50, 0, 55);
FastLED.show();
delay(500);
leds[12] = CRGB(55, 200, 20);
FastLED.show();
delay(500);
leds[13] = CRGB(85, 160, 180);
FastLED.show();
delay(500);
leds[14] = CRGB(20, 255, 0);
FastLED.show();
delay(500);
leds[15] = CRGB(150, 150, 60);
FastLED.show();
delay(500);
}
實(shí)驗(yàn)場景圖
/*
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
實(shí)驗(yàn)八十六: WS2812B-4*4位 RGB LED 全彩驅(qū)動16位彩燈開發(fā)板
項目之三,簡單漸變彩虹色
*/
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 7
#define NUMPIXELS 16
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);
}
}
實(shí)驗(yàn)開源仿真編程(Linkboy V4.5)
實(shí)驗(yàn)開源圖形編程(Mind+珍特、Mixly祝峻、編玩邊學(xué))