RT.
本人的某童鞋的妹子要求给闹钟增加一个奇葩的功能,夏天闹铃响以后按20次闹钟才不叫,冬天按10次。。。
本来计划用ATtiny 45来完成这个项目的,结果发现ATtiny45又贵又难买,taobao上去买还碰到JS,拍下2周还不发货,当时说好第二天发货的。
最后发现箱子里还有几片ATmega328P,正好我也有tinyISP,果断烧入Arduino Bootloader.
基本原理没啥好说的,就是每次石英钟闹铃信号来了就先测量AD(接可调电阻和温敏电阻)得到温度,然后判断几次,把音乐集成电路触发端拉高,然后记录按钮按下次数。
这里由于AVR单片机IO口有PULLUP模式,节省了很多很多电阻,开关和闹铃信号接入都是默认IO上拉然后被输入信号拉下来的。Arduino上设定非常简单pinMode(Pin,INPUT_PULLUP);
本来以为闹钟3V供电ATmega328P应该很难工作在16MHz,不过事实证明能工作,而且也挺稳定,这样省去了电源方面问题。
按钮操作设定为:
RESET为单片机复位,每次复位结束单片机启动以后,LED亮200ms一下。
当单片机启动时候如果SET按钮按下,那么LED亮200ms以后还会以100ms周期50%占空比闪10下,之后LED显示AD转换结果,如果设定温度比测量到温度高,则LED不亮,否则亮。退出SET模式只要RESET即可。
如果单片机启动时候SET按钮未按下,就是正常工作模式。
200字以内,仅用于支线交流,主线讨论请采用回复功能。