成为订阅者(免费)

加入29,000名其他订阅者以获得用户销售折扣和 其他免费资源。
:
:
大学教师'担心 - 您的邮件地址完全是 安全的。我保证使用它 只要 to send you MicroZine.

如何使用三个微控制器引脚驾驶RGB LED。

RGB LED包含一个包装的三个LED 壳牌:红色,绿色和蓝色(有些含有额外的蓝色LED - 作为蓝色LED 每mA产生较少的输出强度(Candela)。它看起来像一个白色 LED除了它有四个引线 - 一个用于共同的地面连接和 one for each led.

此项目显示如何在不使用内部的情况下生产PWM输出 PWM硬件模块I.E.软件PWM方法。

PWM RGB使用微控制器LED.

基本操作

通过每个LED的平均电流确定它's 光输出即,其对总输出颜色的贡献。所以通过控制 通过每个LED的平均电流您可以创建几乎任何其他颜色。  

规格

RGB LED输出颜色 红色的, Green, Blue

RGB LED驱动程序项目详细信息。

RGB LED.Project
编译器 mikroelectronika mikroc编译器 自由!
目标 16F877A (与具有3个输出引脚的其他照片重新标准!)。
软件级别 中等的。
软件说明 打断 driven 3 output PWM.
硬件级别 简单。
硬件笔记 不 special notes
项目 version 1.01
项目文件 输入您的详细信息以获得 下载链接
并获得微控制器通讯:


(您的电子邮件是安全的,永远不会 be sold or rented).
You will get 所有C源代码和 hex file.

注意:检查您的电子邮件是否有关项目代码下载链接。

您可以通过电路中的PIC编程 ICSP.连接器。

扩散器

通过各个LED改变电流,您几乎可以创建 任何其他颜色,但近距离您只能看到每个各种颜色 LED.

看看'merged'颜色从距离视图或放一个 扩散器过来。我用一小块烘焙纸 - 这是透明的 足以让光通过和不透明,以扩散来自光的光 三个LED。在适当的设计中,您将使用扩散的LED(粗糙!)。

它 一切都取决于你想要做的事情,因为光输出减少了 使用Diffused LED,因此您可能希望将RGB LED放在外壳中 这是漫反射的。半透明塑料外壳, 哪种情况您将使用非漫连的LED。

注意:Web中的其他项目 显示没有扩散器的输出我认为相机设置合并灯 充当扩散器(他们用数码相机提供相同的结果 i.e. It'不是你的眼睛在替补席上看到的)。

如果您使用这些LED使用这些LED赢得牌't need a 扩散器,因为您的眼睛无法区分各个LED(如果 it'非常远离 - 它'与电视像素完全相同)。

怎么运行的。

该项目使用脉冲宽度调制来驱动每个 RGB LED中的LED。通过改变您可以的每个PWM信号的占空比 控制流过每个LED的平均电流创建任何颜色 想。限制由PWM的分辨率设定(设置为256步 channel).

该项目依赖于愿景的持久性,使其出现 LED被连续驱动(必须快速重复PWM信号 足以让您在大于50Hz的速率下看不到任何闪烁) (约)。太慢,你开始看到LED闪烁。

PWM软件

pic MICROS只有一个内置PWM模块,因此您需要 在软件中创建三个脉冲宽度调制器。

这相当容易使用图片中的一个定时器 micro and all that'所需的是输出分辨率的8位计时器 1/256.

注意:它'非常难以让它在4MHz工作(它 可能可以在装配者或更多的努力中完成'C'). So I chose to 使用20MHz水晶只是为了使其更容易。

心跳计时器

该项目使用计时器0来创建心跳计时器 生成常规中断。 PWM定时器刻度命令例程在此调用控制 the PWM operation.

注意:您可以使用任何定时器生成 heartbeat.

非PWM使用

使用三色LED的另一种方式是不使用PWM和 将每个LED线路视为完全打开或关闭。

以这种方式使用它获得六种颜色输出:红色,绿色, 蓝色,洋红色,青色和黄色 - 没有复杂的PWM控制。

硬件

硬件简单,只需要三条电线驱动 the rgb led.

RGB LED电路
(单击图表以打开PDF)。

RGB LED硬件电路


RGB LED软件操作

源代码包括以下文件:

RGB LED.'C' Files

  • 16F877A_RGB-LED.C.
  • PWM.C.

RGB LED头文件

  • PWM.H.
  • 比特
  • 类型

RGB LED:PWM.C,PWM.H,类型。

PWM.h定义了用于其他文件的原型。

PWM.C定义了一个简单的脉冲宽度调制器 - 简化了 每个输出使用相同的时基。两个用户访问功能让您 初始化端口并设置占空比:

  • _PWM_INIT(U8 *使用,U8 _P1,U8 _P2,U8 _P3)
  • _pwm_duty(U8 Chan,U8 D)

请注意,U8在Types.h中定义为typeedef所以如此 无符号短(通常为8位)的短手,因此无符号 8bit.

频道在_pwm_duty中选择0到2。

RGB LED:PWM中断

PWM的主控是_pwm_timer_tick(void) 必须定期从计时器中断调用。这调用本地文件 范围函数操作然后调用pwm输出的chan_action。 请注意,此处使用暗影寄存器以确保设置输出 correctly.

您需要将影子寄存器与其他代码集成 如果其他代码访问相同的端口。

PWM的分辨率为256位,每个呼叫 _pwm_timer_tick(void)每个PWM通道都已更新。

RGB LED:16F877A_RGB-LED.C

此函数包含主要初始化端口C上的PWM 并进入无限循环。

随机数发生器QRN似乎比 内置一个,它使用较少的内存。它用于random_start以设置a 每个通道的随机占空比值和随机扫描方向。

在无限循环中,每个通道都使用 来自数组占空比的当前值[]和DIR []。这会产生随机 彩色脉动光输出。

因此,在300计数之后开始新的随机序列 周期开始新的随机序列,所以你不'看到同样的事情 and over.

新的! Comments

让你说到你刚刚阅读的东西!留下下面的框中的评论。


跳跃 RGB LED. page 
最佳微控制器项目主页。


隐私政策 | 接触 | 关于我

网站地图 | 使用条款


ezoic.报告此广告

访问我们的Facebook页面:

   点击这里



最近的文章

  1. 如何使用ADS1115

    使用ADS1115精度16位ADC进行教程进行低功耗。

    阅读更多

  2. arduino.模拟输出...易模拟输出生成

    arduino.模拟输出:如何创建最精确的PWM模拟输出以及如何创建模拟PWM正弦波。

    阅读更多

  3. 数号和等效的快速宏。加快代码!

    了解DigitalWrite()的工作原理......现在使用17倍宏宏!

    阅读更多

  4. TCS230颜色传感芯片:如何运作以及如何使用它。

    如何使用TCS230(/ TCS3200)彩色检测器芯片并轻松将其添加到您的任何项目中。

    阅读更多

  5. 如何使用ADXL345进行运动感测等。

    使用ADXL345 Acellerometer,您可以检测到16G!您还可以了解如何使用它来点击检测等。

    阅读更多

  6. HMC5883L 3轴数字MAGENTOMTER如何运作

    HMC5883L - 如何制作数字罗盘,了解HMC5883L和QMC5883L之间的差异以及它们是否兼容。

    阅读更多



读者 Comments

"I wanted to thank
你这么好
对于所有信息
你已经提供了
你的网站's

高超极好的."

- 逃亡Potthath.

"This site really is
最好的和我最喜欢的。
我发现这里有很多很有用
项目和提示。"

- 米兰

Bursach.<at>gmail.com<

"Awesome site,
非常,非常容易和好
导航!"


-
镭_tr.<at>
wolf359.cjb.net.


学习微控制器

"Interested in
微控制器?"

注册
免费7天指南:

自由 GUIDE : CLICK HERE


"I am a newbie to PIC
我想说
 how great your
网站一直在为我。"


- 戴夫

de_scott.<at>bellsouth.net

"Your site is a great
和完美的工作。
恭喜。"


- SURESH.

IntegratedInfosys.<at>
Yahoo.com.

"I couldn't find the correct
要定义的词语
你的网页。

非常有用,揭开,
诚实明确。

非常感谢
你的时间和作品。
问候。"


- Anon.

回到顶部