问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Arduino UNO R3定时器详解及应用案例

创作时间:
作者:
@小白创作中心

Arduino UNO R3定时器详解及应用案例

引用
CSDN
1.
https://m.blog.csdn.net/FKL1054934525/article/details/142611327

Arduino定时器是实现精准时间控制的关键组件,广泛应用于各种需要定时功能的项目中。本文将详细介绍Arduino UNO R3的三个定时器及其在不同库函数中的应用,并通过一个LED闪烁的实验案例,展示如何使用MsTimer2库实现定时功能。

定时器介绍

定时器是一种软件中断,就像一个时钟,可以测量事件的时间间隔。例如,早晨闹钟可以在7点半准时叫醒你。

Arduino UNO R3的定时器

Arduino Uno采用的是16Mhz的晶振。单次计数需要1/16000000秒或62纳秒。这意味着Arduino每62纳秒从一条指令移动到另一条指令。当然时钟频率越高,处理速度就越快。

每个定时器都有一个计数器,在计时器的每个时钟周期递增。因此,你需要定的时间,单片机自己通过数数来实现。

在Arduino Uno中有三个定时器,他们分别被使用到以下官方函数和库中:

  • Timer0(8位定时器)

  • delay()

  • delayMicroseconds()

  • millis()

  • micros()

  • Timer1(16位定时器)

  • 伺服电机库 Servo.h

  • Timer2(8位定时器)

  • tone()函数

各个定时器与引脚功能、软件库功能对应关系:

  • Timer0:D5/D6的PWM输出、delay()、millis()、delayMicroseconds()
  • Timer1:D9/D10的PWM输出、舵机库Servo.h、TimerOne库
  • Timer2:D3/D11的PWM输出、无源蜂鸣器的tone()、MsTimer2库(三方库)

MsTimer2库的使用

MsTimer2库是一个第三方库,用于实现更灵活的定时功能。以下是其使用方法:

#include <MsTimer2.h> //调用三方库
MsTimer2::set(time, Task_Time); //初始化库函数,在setup函数里。
参数一:time,是指定时多久,单位毫秒。
参数二:定时的时间到了需要去执行的任务函数。
MsTimer2::start(); //开启定时器,无参数。在setup函数里三方库的初始化后面。

应用案例:LED闪烁

电路接线图

实现代码

#include <MsTimer2.h> //调用三方库定时器库
#define led 13
boolean LEDStatus;
void Task_Time()                      //时间到了的执行函数
{
  LEDStatus = !LEDStatus;             //灯状态翻转
  if (LEDStatus)digitalWrite(led, HIGH);
  else digitalWrite(led, LOW);
}
void setup() 
{
  pinMode(led, OUTPUT);              //13引脚设置为输出
  MsTimer2::set(1000, Task_Time);    //初始化定时器库,设置一秒执行一次Task_Time
  MsTimer2::start();                 //开启定时器
}
void loop() 
{
//不用写内容,自动调用。
}  
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号