Ardunio库Ticker库基本操作(定时器函数)

本文章借鉴于太极创客团队,以表感谢。

使用Ticker库函数可以轻松实现定时器。

一、Ticker库的几个函数

#include <Ticker.h>

Ticker ticker;// 建立Ticker用于实现定时功能

ticker.attach(1, sayHi);//每隔一秒钟调用sayHi函数一次,attach函数的第一个参数
                        // 是控制定时间隔的变量,该参数的单位为秒。第二个参数是
                        // 定时执行的函数名称。

ticker.detach();  // 使用detach来停止ticker对象定时调用函数

ticker.attach(1, sayHi, 8);//这里有3个参数,其中第三个参数就是向定时调用的sayHi函数所传递的参数

ticker.attach_ms(100, sayHi)//每隔100ms钟调用sayHi函数一次

二、一个简单的例子,其中包括了定时和外部触发

#include <Ticker.h>

Ticker ticker;
Ticker buttonTicker;

int count;

void setup() 
{
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(D3, INPUT_PULLUP);
  
  ticker.attach(1, sayHi, 60);
  buttonTicker.attach_ms(100, buttonCheck);
}

void loop() 
{
  for (int fadeValue = 0 ; fadeValue <= 1023; fadeValue += 5) 
  {
    analogWrite(LED_BUILTIN, fadeValue);
    delay(10);
  }

  for (int fadeValue = 1023 ; fadeValue >= 0; fadeValue -= 5)
  {
    analogWrite(LED_BUILTIN, fadeValue);
    delay(10);
  }
  delay(3000);
}

void sayHi(int hiTimes)
 {
  count++;
  Serial.print("Hi ");
  Serial.println(count);

  if (count >= hiTimes) 
  {
    ticker.detach();
    Serial.print("ticker.detach();");
  }
}

void buttonCheck()
{
  if (digitalRead(D3) == LOW)
  {
    Serial.println("D3 Button Pushed...");
  }
}

三、注意事项

Ticker定时调用的函数必须要“短小精悍”。比如以上一系列的示例程序中,我们仅仅让Ticker定时调用函数执行简单的串口数据输出,以及很基本的运算。事实上,在使用Ticker库时,定时调用函数必须要很快的执行完毕。否则会产生难以预料的问题。

解决方法:创建一个count变量放在Ticker函数里自加或自减,当计数变量count达到我们需要的数值后,则让Ardunio执行较为复杂的函数。完美解决。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式点灯大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值