创客联盟网
标题:
Arduino里面有个闹钟——TimerOne库的使用
[打印本页]
作者:
CCFIVE
时间:
2013-8-30 16:28
标题:
Arduino里面有个闹钟——TimerOne库的使用
(, 下载次数: 149)
上传
点击文件名下载附件
下载积分: 贡献 -1
Arduino里面有个闹钟!其实更准确的说是一个定时器!TimerOne
(, 下载次数: 11)
上传
点击文件名下载附件
下载积分: 贡献 -1
它到底有什么用呢?其实如果你是新手你一般不会觉得它有什么用!但是到你做到一些制作稍微复杂的时候你就会发现,它的用处非常大。例如好像在一些时候,我们用蜂鸣器和按键的时候,好像按键突然变得不灵敏了!不信?你可以挑战下自己,试一试写一个蜂鸣器响!按键按下亮灯的程序!
[mw_shl_code=cpp,true]void setup()
{
pinMode(13,OUTPUT);
}
void loop()
{
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}[/mw_shl_code]
还记得我们的led实验吗?其中
delay(1000);
这个语句cpu就停在这里不断的循环,循环够1s了,cpu继续往下执行代码,所以你在cpu在执行delay语句期间你让它检测按键什么的,它是不会理你的!我举个现实中的例子!例如我叫你每隔半个小时去开看门看下家里的小宠物回家没?如果你用了delay,就是相当于你一直盯着钟来看!什么事情都不干!是不是感觉很愚蠢?其实更聪明的方法是设置一个闹钟,每半个小时响铃然后去看门看下,这样子在闹钟没响的时候我们可以去干其它事情,而不是把时间浪费在等待中!
所以你们这时候需要闹钟——TimerOne
TimerOne使用方法很简单!
看下我用TimerOne将上面的程序改写下,变成高效的程序
[mw_shl_code=cpp,true]#include <TimerOne.h>
void setup()
{
pinMode(13, OUTPUT);
Timer1.initialize(100000);
Timer1.attachInterrupt( timerIsr );
}
void loop()
{
}
void timerIsr()
{
digitalWrite( 13, digitalRead( 13 ) ^ 1 );
}[/mw_shl_code]
Timer1.initialize(100000);
这个就是设置那个定时时间,例如我要每隔半个小时,那样我括号就写上半个小时对应的数字!这里要注意下单位是
微秒,1秒=1000 000微秒
Timer1.attachInterrupt( timerIsr );
这个就是设置要干什么事情,括号里面就是填写时间到了,你要去做哪个函数。例如,现在设置每隔0.1s然后就去做timerIsr这个函数!
剩下的就没什么难题了,希望大家熟练掌握这个好用的闹钟!
作者:
echo88
时间:
2013-12-16 23:42
楼主辛苦了!
欢迎光临 创客联盟网 (https://immaker.org/)
Powered by Discuz! X3.3