幻生幻灭 发表于 2015-8-31 09:53:42

世界最小的Arduino——ATTiny13上手全攻略2B呼吸灯

本帖最后由 幻生幻灭 于 2017-2-15 10:42 编辑

系列教程传送门
世界最小的Arduino——ATTiny13上手全攻略1A简介
世界最小的Arduino——ATTiny13上手全攻略1B在Arduino IDE环境下的搭建
世界最小的Arduino——ATTiny13上手全攻略1C用Arduino来下载
世界最小的Arduino——ATTiny13上手全攻略2A跑马灯
世界最小的Arduino——ATTiny13上手全攻略2B呼吸灯
世界最小的Arduino——ATTiny13上手全攻略2C舵机测试仪
世界最小的Arduino——ATTiny13上手全攻略3A冬日雪花

实验二:多功能调光灯(呼吸灯)
http://v.youku.com/v_show/id_XMTMyMzg5OTMwNA==.html
在本实验中,我们将通过制作一款多功能调光灯来熟悉模拟量输入和PWM输出控制。本实验主要由两部分控制逻辑构成,当电位器旋钮调节从0到接近最大值时,LED会将电位器输入的模拟量映射成PWM输出,实现亮度从暗到亮的调节;当电位器旋钮旋转到最大值时,系统会切换到呼吸灯模式。最终实现效果如下图



面包板接线也比较简单,左边一个旋钮电位器接到A3端口,右面一个LED接到ATTiny13的PWM0引脚上。在ATTiny13中,模拟量端口支持A0到A3(其中A0是RST复位引脚不能用)。


本实验的代码稍微复杂了一点,除了涉及到analogIn()和analogWrite()两个模拟量功能函数,还使用了if()判断和map()映射函数。这里大家要注意一点我们的代码量已经达到了950 bytes,再写几行估计就要存储空间不足了。如果希望包含更多的LED效果,就需要对代码进行优化了,我们会在后续的教程中进行介绍。


当然如果大家仅仅想实现呼吸灯功能,可以直接选择Arduino文件菜单中的File > Examples > 03.Analog > Fading来实现。但要记得把ledPin的值修改为0或1(ATTiny13只有2路PWM输出,其他引脚不支持analogWrite()函数),否则虽然编译可以通过,但是下载进去不会有任何效果。



如果希望对ATTiny13的函数有进一步了解,可以打开Arduino软件所在文件夹,找到其目录下的arduino-1.0.3\hardware\arduino\cores\core13\wiring_analog.c文件并用记事本打开。AnalogWrite()函数会先进行兼容性输出模式设置,这也是为什么即使在setup()中我们没有对输出的LED进行pinMode(pin, OUTPUT)的定义,程序也能正常运行的原因。然后判断引脚的兼容性,并对0或1引脚进行PWM的寄存器操作,而其他引脚则不受PWM值影响只有点亮或熄灭两种状态。

迷你强 发表于 2015-8-31 11:17:27

很酷啊。上个视频呗

幻生幻灭 发表于 2015-8-31 13:51:22

本帖最后由 幻生幻灭 于 2015-8-31 13:52 编辑

迷你强 发表于 2015-8-31 11:17 static/image/common/back.gif
很酷啊。上个视频呗

等我弄弄

邓维安 发表于 2015-8-31 17:31:12

{:soso_e179:}

Super169 发表于 2015-9-1 00:10:00

支持! {:soso_e179:}

mondaywoo 发表于 2015-9-3 15:36:25

初学者学习
页: [1]
查看完整版本: 世界最小的Arduino——ATTiny13上手全攻略2B呼吸灯