创客联盟网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

开思网在线3D打印服务
查看: 47818|回复: 1
打印 上一主题 下一主题

Arduino里面有个闹钟——TimerOne库的使用

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-30 16:28:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册(开思网用户可以直接登录),结交更多创客好友,享用更多功能,让你轻松玩转创客社区。

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

x


Arduino里面有个闹钟!其实更准确的说是一个定时器!TimerOne TimerOne.rar (2.75 KB, 下载次数: 11)
它到底有什么用呢?其实如果你是新手你一般不会觉得它有什么用!但是到你做到一些制作稍微复杂的时候你就会发现,它的用处非常大。例如好像在一些时候,我们用蜂鸣器和按键的时候,好像按键突然变得不灵敏了!不信?你可以挑战下自己,试一试写一个蜂鸣器响!按键按下亮灯的程序!

[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这个函数!

剩下的就没什么难题了,希望大家熟练掌握这个好用的闹钟!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持5
推荐
发表于 2013-12-16 23:42:39 | 只看该作者

马上注册(开思网用户可以直接登录),结交更多创客好友,享用更多功能,让你轻松玩转创客社区。

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

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

本版积分规则

QQ|手机版|创客联盟网  

GMT+8, 2024-4-26 08:25 , Processed in 0.014605 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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