立即注册 找回密码

微雪课堂

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

Accessory Shield学习4:多彩LED

2015-5-6 18:04| 发布者: yanwl| 查看: 3152| 评论: 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灯不会突然点亮,吓坏小伙伴怎么办。

代码示例:

#include "ChainableLED.h"

#define NUM_LEDS  1

/*
I/O define
*/
const int rgb_pwr = 12;                                     //rgb power control
const int clk_pin = 6;                                      //clock
const int data_pin = 5;                                     //data
const int analog_pin = 0;                                   //pot input

/*
variable
*/
float hue = 0.0;
boolean up = true;
ChainableLED leds(clk_pin, data_pin, rgb_pwr, NUM_LEDS);    //defines the pin used on arduino.

void setup()
{
  leds.pwr_set(PWR_ENABLE);                                 //open the rgb power supply
}
void loop()
{
  delay(30);
  for (byte i=0; i < NUM_LEDS; i++)
    leds.setColorHSB(i, hue, 1.0, 0.5);
    
  if (up)
    hue+= 0.025;
  else
    hue-= 0.025;
    
  if (hue > =1.0 && up)
    up = false;
  else if (hue<=0.0 && !up)
    up = true;
}


附件:

rgb.zip


197

顶一下

刚表态过的朋友 (197 人)

相关阅读

最新评论

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

GMT+8, 2024-11-23 20:12 , Processed in 0.018033 second(s), 21 queries .

返回顶部