加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Arduino Uno + 四脚三色LED简介及测试实验

(2013-01-02 21:30:53)
标签:

it

四脚三色led

arduino

一、器材介绍:

  (1)器材名称:

       四脚三色LED

http://s2/mw690/b4d6244agd24d18fe77f1&690Uno 四脚三色LED简介及测试实验" TITLE="Arduino Uno 四脚三色LED简介及测试实验" />

 (2)主要技术参数:

      R:波长630-640nm    亮度1000-1200MCD      电压1.8-2.0

      G:波长515-525nm    亮度3000-5000MCD      电压3.2-3.4

      B:波长465-475nm    亮度2000-3000MCD      电压3.2-3.4

       直径5mm,有盘,透明,四脚;

       白发红绿蓝三色全彩LED,共阳(即公共端接正极,靠分别控制led的负极来点亮模块),

     高亮发光二极管。脚距1mm。内部电极最大的脚为2脚,即公共端。

 (3)工作原理:

      PWM:

      脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

      模拟信号的值可以连续变化,其时间和幅度的分辨率都没有限制。模拟电压和电流可直接用来进行控制,如对汽车收音机的音量进行控制。尽管模拟控制看起来可能直观而简单,但它并不总是非常经济或可行的。。其中一点就是,模拟电路容易随时间漂移,因而难以调节。能够解决这个问题的精密模拟电路可能非常庞大、笨重(如老式的家庭立体声设备)和昂贵。模拟电路还有可能严重发热,其功耗相对于工作元件两端电压与电流的乘积成正比。模拟电路还可能对噪声很敏感,任何扰动或噪声都肯定会改变电流值的大小。通过以数字方式控制模拟电路,可以大幅度降低系统的成本和功耗。

      脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。

http://s7/mw690/b4d6244agd24d290931b6&690Uno 四脚三色LED简介及测试实验" TITLE="Arduino Uno 四脚三色LED简介及测试实验" />
二、测试实验:

 【1】多色闪烁实验:

    (1)实验目的:

         实现LED的多颜色依次闪烁效果,类似于流水灯效果。

    (2)连接方式(理论):

        R、G、B脚依次接数字IO口9、10、11

        Common脚接5V

http://s7/mw690/b4d6244ag7b6e1f9090c6&690Uno 四脚三色LED简介及测试实验" TITLE="Arduino Uno 四脚三色LED简介及测试实验" />

    (3)连接方式(实际):

 

http://s12/mw690/b4d6244agd24d522bf4db&690Uno 四脚三色LED简介及测试实验" TITLE="Arduino Uno 四脚三色LED简介及测试实验" />

    (4)运行代码:

int led1 = 9;

int led2 = 10;

int led3 = 11;

void setup()

{

  pinMode(led1,OUTPUT);

  pinMode(led2,OUTPUT);

  pinMode(led3,OUTPUT);

}

void setColor(int red,int green,int blue)

{

  analogWrite(led1,255-red);

  analogWrite(led2,255-green);

  analogWrite(led3,255-blue);

}

void loop()

{

  setColor(255,0,0);  //Red

  delay(100);

  setColor(0,255,0);  //Green

  delay(100);

  setColor(0,0,255);  //blue

  delay(100);

  setColor(255,255,0);  //Yellow

  delay(100);

  setColor(0,255,255);  //Light Green

  delay(100);

  setColor(255,0,255);  //Purple

  delay(100);

}

 

    颜色混合参照RGB模式。由黑色(不发光)至红、绿、蓝分为256个度,即0~255

如果你熟悉网页编程,你可能会意识到,颜色通常表示为一个十六进制数。例如,红色的编号为#FF0000。你可以在这找到一种特定的颜色对应的响应编码
六位数字的编码,实际上是三组数字。第一组2位数字表示红色成分的颜色,在接下来的两组数字分别是绿色部分和蓝色部分。红色是#FF0000,因为它的最大的红色(FF是十六进制的255),它有没有绿色或蓝色的部分。

    这将是非常有用的,你可以直接输入色号,通过RGB LED显示出来。  让我们尝试这种浅绿颜色(#32B 16C)。

http://s11/mw690/b4d6244agd24d5d3fe11a&690Uno 四脚三色LED简介及测试实验" TITLE="Arduino Uno 四脚三色LED简介及测试实验" />

我们可以插入这样的“setColor”函数:

setColor(0x32,0xB1,0x6C)//浅绿

 

 【2】渐变色实验:

    (1)实验目的:

        实现LED的多色渐变效果

    (2)连接方式(理论加实际):

         同实验一

    (3)运行代码:

int led1 = 9;

int led2 = 10;

int led3 = 11;

void setup()

{

  pinMode(led1,OUTPUT);

  pinMode(led2,OUTPUT);

  pinMode(led3,OUTPUT);

}

void setColor(int red,int green,int blue)

{

  analogWrite(led1,255-red);

  analogWrite(led2,255-green);

  analogWrite(led3,255-blue);

}

void loop()

{

  for(int i=0;i<256;i++)

  {

    setColor(i,0,0);

    delay(10);

  }

  for(int i=255;i>=0;i--)

  {

    setColor(i,0,0);

    delay(10);

                              //红色渐亮渐暗

  for(int i=0;i<256;i++)

  {

    setColor(0,i,0);

    delay(10);

  }

  for(int i=255;i>=0;i--)

  {

    setColor(0,i,0);

    delay(10);

                             //绿色渐亮渐暗

  for(int i=0;i<256;i++)

  {

    setColor(0,0,i);

    delay(10);

  }

  for(int i=255;i>=0;i--)

  {

    setColor(0,0,i);

    delay(10);

                            //蓝色渐亮渐暗

}

 

 

对于颜色过渡效果,将循环体稍作修改即可:

void loop()

{

  int i,j;

  for(i=0,j=255;i<256;i++)

  {

    setColor(i,j,0);

    delay(4);

    j--;

  }

  delay(100);           //绿色向红色渐变

  for(i=0,j=255;i<256;i++)

  {

    setColor(j,0,i);

    delay(4);

    j--;

  }

  delay(100);           //红色向蓝色渐变

  for(i=0,j=255;i<256;i++)

  {

    setColor(0,i,j);

    delay(4);

    j--;

  }

  delay(100);          //蓝色向绿色渐变

}

    (4)实验过程中出现的问题及解决方案:

        1、在做闪烁效果时,将限流电阻串联在公共端上,发现有的颜色无法显示,原因:在公共端串联大电阻时,提供给LED的电压若小于3.2V,将不能发出绿光蓝光,限流电阻应串在负极各针脚上。

       2、在做渐亮渐暗效果时,一开始RGB三个针脚分别接8,9,10数字IO接口,发现红色只有亮与暗两种状态,原因:数字IO端口8为非PWM端口,只能读取输出高低电平两种状态,对应LED亮暗两种状态,无法实现渐变,需要将针脚接在数字IO PWM输出端口上,setColor()函数使用了analogWrite(pin, value),即数字IO 口PWM 输出函数,给一个接口写入模拟值(PWM 波)。改变PWM 脚位的输出电压值。对于 ATmega168 芯片的Arduino(包括Mini 或BT),该函数可以工作于 3, 5, 6, 9, 10 和 11 号接口,即“analogWrite(接口名称, 数值)”,pin 表示3, 5,6, 9, 10, 11,value 表示为0~255。比如可用于电机PWM 调速或音乐播放。

例如:输出电压2.5 伏特(V),该值大约是128

 【3】实验效果视频(实验1+实验2):

http://v.youku.com/v_show/id_XNDk2NjE2MzQ4.html
三、后期工作:

    期末考试即将来临,我们决定先暂时放下手头的项目专心复习,待考试过后再进行我们的测试,愿我们考试顺利!!!

 

(以上资料部分源于互联网)

资料整理人:邓晨涛,张世琳

实验测试者:邓晨涛,林峻民,彭帆,张世琳(按姓氏首字母排序)



 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有