用户名 立即注册 找回密码

微雪课堂

搜索
微雪课堂 外围模块 Accessory Shield 查看内容

Accessory Shield学习4:多彩LED

2015-5-6 18:04| 发布者: yanwl| 查看: 3245| 评论: 0

摘要: 学会了如何发声,下来就要开始学如何发光;虽然一开始在按键扫描那章有看到LED闪烁,但,,,,那真的太简单了。本章我们学习高大上的多彩LED。 原理大放送: ... ... ... ... ... ... ... ... ... ... ...
学会了如何发声,下来就要开始学如何发光;虽然一开始在按键扫描那章有看到LED闪烁,但,,,,那真的太简单了。本章我们学习高大上的多彩LED。
原理大放送:
多彩LED又称为RGB灯,内置红(R)、绿(G)、蓝(B)三个灯珠,通过调节不同灯的亮度就可以混合出万千色彩。调节灯的亮度?没错就是你脑子现在想的那种方式!!!
其实就两种方式,电压或电流。这里我们采用一款性能优良的IC进行驱动,P9813,这是一款全彩点光源LED驱动芯片,采用CMOS工艺,提供三路恒流驱动及256级灰度调制输出。通信接口采用双线传输方式(DATA与CLK),内建再生(就是功率放大),可获得更远的传输距离,可用于驱动显示灯光变换、各式字符变换、彩色动漫图案............嗯,说好了全是放干货!具体细节可以去找度娘
原理图如下:

由于U2上电直接驱动RGB灯开始工作,而且颜色值随机。为了避免不使用的时候可以关闭它,所以采用MOS管Q2作为电源软开关,当AR_D12引脚输出高电平时,芯片才会上电工作。而Arduino上电默认引脚为低电平,这样可以保证上电后RGB灯不会突然点亮,吓坏小伙伴怎么办。

代码示例:

01#include "ChainableLED.h"
02 
03#define NUM_LEDS  1
04 
05/*
06I/O define
07*/
08const int rgb_pwr = 12;                                     //rgb power control
09const int clk_pin = 6;                                      //clock
10const int data_pin = 5;                                     //data
11const int analog_pin = 0;                                   //pot input
12 
13/*
14variable
15*/
16float hue = 0.0;
17boolean up = true;
18ChainableLED leds(clk_pin, data_pin, rgb_pwr, NUM_LEDS);    //defines the pin used on arduino.
19 
20void setup()
21{
22  leds.pwr_set(PWR_ENABLE);                                 //open the rgb power supply
23}
24void loop()
25{
26  delay(30);
27  for (byte i=0; i < NUM_LEDS; i++)
28    leds.setColorHSB(i, hue, 1.0, 0.5);
29     
30  if (up)
31    hue+= 0.025;
32  else
33    hue-= 0.025;
34     
35  if (hue > =1.0 && up)
36    up = false;
37  else if (hue<=0.0 && !up)
38    up = true;
39}


附件:

rgb.zip


197

顶一下

刚表态过的朋友 (197 人)

相关阅读

最新评论

微雪官网|产品资料|手机版|小黑屋|微雪课堂. ( 粤ICP备05067009号 )

GMT+8, 2025-4-7 20:28 , Processed in 0.025116 second(s), 21 queries .

返回顶部