|
|
本帖最后由 wasdylb 于 2014-5-25 19:26 编辑
圆环采用WS2812-集控制电路与发光电路于一体的智能外控RGB-LED光源。外环总共有24个灯,中间5个灯,采用Microduino核心来控制。
WS2812特性:
5050高亮LED,内置控制芯片,仅需1个IO口即可控制多个LED
芯片内置整形电路,信号畸变不会累计,稳定显示
三基色256级亮度调剂,16万色真彩显示效果,扫描频率不低于400Hz/S
串行连级接口,能通过一根信号线完成数据的接收与解码
刷新速率30帧/秒时,低速连级模式连级数不小于512点
数据收发速度最高可达800Kbps
Microduino圆环初探:
所用到的库:
Adafruit_NeoPixel
https://github.com/adafruit/Adafruit_NeoPixel
用到模块:
Microduino Core 核心
Microduino ft232R 下载程序
打开示例程序strandtest,下载可以看到各式各样效果:
Microduino圆环时钟:
用到模块:
Microduino Core 核心
Microduino ft232R 下载程序
Microduino RTC 时间
用到Rtc_Pcf8563库:http://playground.arduino.cc/Main/RTC-PCF8563
程序:
- #include <Wire.h>
- #include <Rtc_Pcf8563.h>
- #include <Adafruit_NeoPixel.h>
- Rtc_Pcf8563 rtc;//初始化实时时钟
- #define PIN 4
- Adafruit_NeoPixel strip = Adafruit_NeoPixel(28, PIN, NEO_GRB + NEO_KHZ800);
- int timehour,timemin,timesec,timeweek;
- int val_min,val_sec,val_m,val_d,val_hour,val_h;
- void setup() {
- Serial.begin(9600);
- strip.begin();
- strip.show(); // Initialize all pixels to 'off'
- //vosettime();
- }
- void loop() {
- rtc.formatDate();
- rtc.formatTime();
- timeweek=rtc.getWeekday();
- timehour=rtc.getHour();
- timemin=rtc.getMinute();
- timesec=rtc.getSecond();
- val_min = map(timemin, 0, 60, 0, 24);
- val_sec = map(timesec, 0, 60, 0, 24);
- val_d=timemin%5;
- if(timehour<12)
- val_hour=timehour;
- else
- val_hour=timehour-12;
- if(val_h != val_hour)
- {
- colorWipe(strip.Color(0, 0, 0),(val_hour-1)*2 );
- val_h = val_hour;
- }
- else
- colorWipe(strip.Color(255, 0, 0), val_hour*2); // Red
- if(val_m != val_min)
- {
- colorWipe(strip.Color(0, 0, 0), val_min-1);
- val_m = val_min;
- }
- else
- {
- if(val_d==0)
- colorWipe(strip.Color(0, 255, 0), val_min);
- else
- colorWipe(strip.Color(250, 5, 226), val_min);
- }
- if(val_d==0)
- {
- colorWipe(strip.Color(0, 0, 0), 24);
- colorWipe(strip.Color(0, 0, 0), 25);
- colorWipe(strip.Color(0, 0, 0), 26);
- colorWipe(strip.Color(0, 0, 0), 27);
- }
- else if(val_d==1)
- colorWipe(strip.Color(3, 206, 226), 24);
- else if(val_d==2)
- {
- colorWipe(strip.Color(3, 206, 226), 24);
- colorWipe(strip.Color(0, 255, 0), 25);
- }
- else if(val_d==3)
- {
- colorWipe(strip.Color(3, 206, 226), 24);
- colorWipe(strip.Color(0, 255, 0), 25);
- colorWipe(strip.Color(250, 250, 3), 26);
- }
- else if(val_d==4)
- {
- colorWipe(strip.Color(3, 206, 226), 24);
- colorWipe(strip.Color(0, 255, 0), 25);
- colorWipe(strip.Color(250, 250, 3), 26);
- colorWipe(strip.Color(255, 0, 0), 27);
- }
- if(timesec%2==0)
- {
- colorWipe(strip.Color(0, 0, 255), val_sec);
- delay(1000);
- colorWipe(strip.Color(0, 0, 0), val_sec);
- }
- else
- colorWipe(strip.Color(0, 0, 0), val_sec);
- }
- // Fill the dots one after the other with a color
- void colorWipe(uint32_t c,uint8_t x) {
- strip.setPixelColor(x, c);
- strip.show();
- }
- //=======================初始化设置时间函数===========================//
- void vosettime()
- {
- // rtc.initClock();
- //day, weekday, month, century(1=1900, 0=2000), year(0-99)
- rtc.setDate(25, 7, 5, 0, 14);
- //hr, min, sec
- rtc.setTime(18,27, 30);
- }
复制代码
结果:
视频:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|