搜索

作者简历和生物 情侣我的爱好有关的文章 - 机器人
我关于移民澳洲的印象。在俄罗斯只。 为解决日常问题的食谱
Linux相关的职位 Windows相关的职位
与软件相关的职位 很多有关硬件信息
不同的工具,你可能会发现有用 关于各种Web技术的文章
一切不符合其余的菜单 RSS订阅本博客

标签云

档案

链接

安德烈Mikhalchuk的博客

English flagItalian flagKorean flagChinese (Simplified) flagPortuguese flagGerman flagFrench flagSpanish flagJapanese flagRussian flagDanish flagFinnish flagHebrew flag

Technoblog对生活

2011年6月23日,控制的RGB LED使用PICAXE-08:软件PWM的基础

Driving RGB LED with PICAXE-08M

驾驶的RGB LED PICAXE-08M

我工作的一个新的RTFMs情节,涉及包装成一个非常狭小的空间,一个RGB LED和微控制器。 我决定使用的微控制器是PICAXE-08。 我选择它的原因有三:
- 我有一个盒子
- 我有没有其他的计划,因为它似乎不是很适合我(高海拔气球项目)
- 用它来昏暗的RGB LED是一个挑战


我GOOGLE了一会儿,没有发现任何解决方案的RGB LED和PICAXE,08M工作在一起,我计划。 虽然三种不同颜色的LED之间切换,是不是所有的问题,混合颜色是不是这个芯片的琐碎。 我想分别控制各256色阶,亮度/调光,因此LED可以产生真正的RGB混合色。 这通常是脉冲宽度调制(PWM),而不是一个Arduino的问题,例如实现。 ATMega328有6个PWM通道,因此它可以驱动两个RGB LED。 但PICAXE08只有一个PWM通道,这样的任务似乎是不可能的。 我解决的问题,通过实施软件PWM的效果出奇的好,给PICAXE08性能有限。 这里是我的代码:

#REM
简单的PICAXE08米基本程序,随机和独立控制
所有3种颜色在RGB LED的亮度
创造平静patterms(如在心情灯)。
详情请参阅我的博客http://andrey.mikhalchuk.com

你做任何你想要用此代码,只是提到我的博客http://andrey.mikhalchuk.com
的意见,使人们可以找到更新的代码。 谢谢!

这是我的第一个PICAXE方案,我道歉,如果这个代码不符合您的质量
期望和伤害你的感情有多好代码应该看起来像:)
#endrem

#PICAXE08米
setfreq M4

;配置
象征速度= 3;值越小颜色变化速度越高
的象征SPEED_VARIATIONS = 7;定义应该使用多少个不同的颜色变化速度

;地图上的标签
象征RED0_PIN = 0
象征GREEN0_PIN = 1
象征BLUE0_PIN = 2

;地图引脚值,以MEM
;针值是目前的LED亮度
象征red0 = B0
象征green0 = B1
象征blue0 = B2

;地图pin_deltas到Mem
三角洲是亮度变化的速度
象征red0_delta = B3
象征green0_delta = B4
象征blue0_delta = B5

;子程序的温度值
象征delta_w = W3
象征TMP = B7

;子程序参数
符号引脚= B8
符号值= B9
象征三角洲= B10

;初始化一切
red0 = 0
green0 = 70
blue0 = 200
red0_delta = 1
green0_delta = 5
blue0_delta = 9

,启动伺服模式
;注意“servopos RED0_PIN,255”呈现LED熄灭!!
;的“servopos RED0_PIN,0”使得它真的暗淡,但点燃。 是,PICAXE错误,?
伺服RED0_PIN,255
伺服GREEN0_PIN,255
伺服BLUE0_PIN,255

这个代码是像循环(在阿尔杜伊诺)
主要有:
;模拟功能,减少环境中的函数调用
引脚= RED0_PIN:VAL = red0:三角洲= red0_delta:GOSUB set_color_val:red0 = VAL:red0_delta三角洲
引脚= GREEN0_PIN:VAL = green0:三角洲= green0_delta:GOSUB set_color_val:green0 = VAL:green0_delta三角洲
引脚= BLUE0_PIN:VAL = blue0:三角洲= blue0_delta:GOSUB set_color_val:blue0 = VAL:blue0_delta三角洲
转到主

本次调整亮度的LED和三角洲
set_color_val:
值= VAL +三角洲
如果三角洲<128和val <三角洲然后FWD
随机delta_w
三角洲=的三角洲%SPEED_VARIATIONS + 1个
三角洲= 255 - 三角洲
值= 255
ELSEIF三角洲> = 128和val> =三角洲然后反向
随机delta_w
三角洲=的三角洲%SPEED_VARIATIONS + 1个
值= 0
ENDIF
TMP = VAL - 1; servopos错误的解决方法
;啊,servopos只需要常数作为第一个参数:(
如果针= RED0_PIN然后
servopos RED0_PIN,TMP
ELSEIF针= GREEN0_PIN然后
servopos GREEN0_PIN,TMP
ELSEIF针= BLUE0_PIN然后
servopos BLUE0_PIN,TMP
ENDIF
暂停速度
返回

YouTube上看到我的其他博客http://rtfms.com的和视频博客RTFMs的用于演示
,这是覆盖在情节#7:微控制器会见珠宝

这段代码有几个注意事项:
- 它实现了“RGB心情灯”。 随意更改您的需求
- PICAXE不断循环的时间,因为我怀疑是可怕的功耗。 它仍然是良好小时至少由两个微型电池电源时在RTFMs视频博客情节#7所示
- 性能的PICAXE08是马马虎虎。 正如你可以看到上RTFMs视频光略有波光粼粼。 你可能不会注意到,而在人的LED,但摄像头的效果明显。 事实上,情绪的灯,我什至喜欢它:)
- 程序的大小是146字节(256 08)。 你也许可以优化一点。
- 关于这里提到的心情灯项目RTFMs视频稍后被释放

这篇文章发表在硬件如何其他

没有评论

到目前为止没有评论

发表评论

网站地图 (三)安德烈·Mikhalchuk,2005-2008