Arduino 中的 Cron 作业
Arduino 中的 CronAlarms 库可帮助您在 Arduino 中设置 cron 作业。如果您不了解 cron 作业,它们是按固定时间间隔执行的计划任务。例如,每天午夜向服务器发送健康包。
要安装此库,请在库管理器中搜索 CronAlarms,然后安装由 Martin Laclaustra 编写的库。

安装完成后,转到 -文件 → 示例 → CronAlarms。
打开 CronAlarms_example。如果您仔细阅读示例,就会发现它们正在执行以下操作 −
使用 tm 结构体(时间库)将时间设置为 2011 年 1 月 1 日星期六上午 8:29:00
设置 6 个 Cron 闹钟,每日、每周、间隔几秒,甚至设置一次性触发的非重复闹钟。
一次性触发的非重复闹钟实际上会禁用 2 秒的 cron。
在循环中,每秒打印一次当前时间。
cron 创建语法为 -
CronID_t create(const char * cronstring, OnTick_t onTickHandler, bool是一次性的);
其中
cronstring 提供 cron 间隔时间,
onTickHandler 是触发闹钟时调用的函数,
isOneShot 确定闹钟是重复执行还是一次性执行。
此函数返回一个 cron ID,该 ID 可用于在代码中的其他位置引用闹钟,就像在 10 秒闹钟中所做的那样,使用 Cron.free() 禁用 2 秒闹钟。
//创建 2 秒重复闹钟和 10 秒单次闹钟
// 每 2 秒触发一次
id = Cron.create("*/2 * * * * *", Repeats2, false);
// 10 秒后调用一次
Cron.create("*/10 * * * * *", OnceOnly, true);
// 2 秒闹钟函数
void Repeats2() {
Serial.println("2 second timer");
}
//在 10 秒闹钟内禁用 2 秒闹钟
void OnceOnly() {
Serial.println("此定时器仅触发一次,停止 2 秒定时器");
// 使用 Cron.free(id) 禁用定时器并回收其内存。
Cron.free(id);
// 可选,但最安全的做法是在内存回收后"忘记" ID
id = dtINVALID_ALARM_ID;
// 您也可以使用 Cron.disable() 关闭定时器,但请保留
// 它在内存中,以便稍后使用 Alarm.enable() 重新打开。
}
创建 CronAlarm 最重要的部分是 cron 字符串。其语法为 −
"seconds minutes hours days_of_month month days_of_week"
以上任意一个 * 表示"所有值"。因此,
"0 30 8 * * *→ 表示每天 8:30:00 触发。
"30 30 8 * * 6→表示每周六 8:30:30 (day_of_week = 6) 触发。
表达式中的 / 表示间隔。
"*/15 * * * * *→ 表示每 15 秒触发一次。
如果您在 Arduino 上运行此示例,串行监视器输出将为 −

如您所见,警报按预期触发。

