极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 125689|回复: 54

Arduino入门教程--点亮RGB LED

  [复制链接]
发表于 2012-12-14 22:50:09 | 显示全部楼层 |阅读模式
本帖最后由 弘毅 于 2012-12-20 22:56 编辑

在这一课中,您将学习如何用Arduino控制共阳RGB(红绿蓝)LED,您将使用Arduino中的analogWrite的功能控制RGB LED。

需要用到的原件:
器件数量
10毫米共阳RGB LED1
220Ω电阻3
标准面包板1
Arduino mango控制板1
面包板专用跳线盒1
引脚整形器1


下图是一个直径一厘米的RGB LED



乍一看,RGB(红绿蓝)LED看起来就像普通的LED,但是,和一般LED不同的是RGB LED封装内,有三个LED,一个红色,一个绿色的,一个蓝色的。通过控制各个LED的亮度,你可以混合出几乎任何你想要的颜色。

共阳RGB LED共有4个引脚,常见的正极是第二管脚,也是最长的那个引线。此管脚将被连接到+5V。其余的每个LED的需要串联220Ω的电阻,以防止太大的电流流过烧毁。三个正管脚的LED(一个红色,一个绿色以及一个蓝色)连接到电阻然后连接到Arduino的PWM输出引脚,这里我们用到了D9、D10、D11号管脚。






下面的测试程序为红,绿,蓝,黄,紫,浅绿色的循环


  1. /*
  2. 作者:极客工坊
  3. 时间:2012年12月18日
  4. IDE版本号:1.0.1
  5. 发布地址:www.geek-workshop.com
  6. 作用:共阳RGB颜色循环
  7. */

  8. int redPin = 11;
  9. int greenPin = 10;
  10. int bluePin = 9;

  11. void setup()
  12. {
  13.   pinMode(redPin, OUTPUT);
  14.   pinMode(greenPin, OUTPUT);
  15.   pinMode(bluePin, OUTPUT);  
  16. }

  17. void loop()
  18. {
  19.   setColor(255, 0, 0);  // 红色
  20.   delay(1000);
  21.   setColor(0, 255, 0);  // 绿色
  22.   delay(1000);
  23.   setColor(0, 0, 255);  // 蓝色
  24.   delay(1000);
  25.   setColor(255, 255, 0);  // 黄色
  26.   delay(1000);  
  27.   setColor(80, 0, 80);  // 紫色
  28.   delay(1000);
  29.   setColor(0, 255, 255);  // 浅绿色
  30.   delay(1000);
  31. }

  32. void setColor(int red, int green, int blue)
  33. {
  34.   analogWrite(redPin, 255-red);
  35.   analogWrite(greenPin, 255-green);
  36.   analogWrite(bluePin, 255-blue);  
  37. }
复制代码


程序下载好后,就可以看到颜色的依次循环变化,可以看我们的演示视频



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

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


我们可以插入这样的“setColor”函数:
  1. setColor(0x32,0xB1,0x6C)//浅绿
复制代码

不要忘了在setColor函数后面加上延时函数,这样就可以显示你所需要的颜色了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-2-7 00:21:16 | 显示全部楼层
沙发~很漂亮的效果啊。。
回复 支持 反对

使用道具 举报

发表于 2013-2-18 17:55:11 | 显示全部楼层
不错,好看
楼主,辛苦了,谢谢
回复 支持 反对

使用道具 举报

发表于 2013-2-22 13:32:27 | 显示全部楼层
大顶楼主,很漂亮的灯。。。
回复 支持 反对

使用道具 举报

发表于 2013-2-22 19:43:56 | 显示全部楼层
很好,可管子没有,
回复 支持 反对

使用道具 举报

发表于 2013-3-19 15:49:08 | 显示全部楼层

很好,可管子没有~~我也是这样的
回复 支持 反对

使用道具 举报

发表于 2013-4-2 16:56:45 | 显示全部楼层
一定要用Arduino mango控制板?用Arduino UNO 控制板可以吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-2 17:08:00 | 显示全部楼层
Mei_Ling 发表于 2013-4-2 16:56
一定要用Arduino mango控制板?用Arduino UNO 控制板可以吗?

可以的
回复 支持 反对

使用道具 举报

发表于 2013-4-2 17:23:32 | 显示全部楼层
谢谢了。。。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2013-4-16 09:53:02 | 显示全部楼层
顶。。。
回复 支持 反对

使用道具 举报

发表于 2013-7-15 11:08:33 | 显示全部楼层
void setColor(int red, int green, int blue){  analogWrite(redPin, 255-red);  analogWrite(greenPin, 255-green);  analogWrite(bluePin, 255-blue);  }这个函数为什么用
'255-red"...而不是直接用“red"...?
回复 支持 反对

使用道具 举报

发表于 2013-7-15 11:19:40 | 显示全部楼层
swdsbt 发表于 2013-7-15 11:08
void setColor(int red, int green, int blue){  analogWrite(redPin, 255-red);  analogWrite(greenPin, 2 ...

这个RGB LED是共阳的~~~
回复 支持 反对

使用道具 举报

发表于 2013-7-15 19:36:34 | 显示全部楼层
弘毅 发表于 2013-7-15 11:19
这个RGB LED是共阳的~~~

哦,Thanks
回复 支持 反对

使用道具 举报

发表于 2013-10-22 10:33:16 | 显示全部楼层
还不错!!学习了!
回复 支持 反对

使用道具 举报

发表于 2013-12-9 10:38:46 | 显示全部楼层
void setColor(int red, int green, int blue)
{
  analogWrite(redPin, 255-red);
  analogWrite(greenPin, 255-green);
  analogWrite(bluePin, 255-blue);  
}
这个没有的话会怎么呢?它有什么作用呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 14:14 , Processed in 0.049506 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表