极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 23240|回复: 5

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

[复制链接]
发表于 2015-8-31 09:53:42 | 显示全部楼层 |阅读模式
本帖最后由 幻生幻灭 于 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冬日雪花

实验二:多功能调光灯(呼吸灯)

在本实验中,我们将通过制作一款多功能调光灯来熟悉模拟量输入和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值影响只有点亮或熄灭两种状态。

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2015-8-31 11:17:27 | 显示全部楼层
很酷啊。上个视频呗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-31 13:51:22 | 显示全部楼层
本帖最后由 幻生幻灭 于 2015-8-31 13:52 编辑
迷你强 发表于 2015-8-31 11:17
很酷啊。上个视频呗


等我弄弄
回复 支持 反对

使用道具 举报

发表于 2015-8-31 17:31:12 | 显示全部楼层
{:soso_e179:}
回复 支持 反对

使用道具 举报

发表于 2015-9-1 00:10:00 | 显示全部楼层
支持! {:soso_e179:}
回复 支持 反对

使用道具 举报

发表于 2015-9-3 15:36:25 | 显示全部楼层
初学者学习
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 15:36 , Processed in 0.046906 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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