授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力。希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石。。。
一、基础篇
- ESP8266开发之旅 基础篇① 走进ESP8266的世界
- ESP8266开发之旅 基础篇② 如何安装ESP8266的Arduino开发环境
- ESP8266开发之旅 基础篇③ ESP8266与Arduino的开发说明
- ESP8266开发之旅 基础篇④ ESP8266与EEPROM
- ESP8266开发之旅 基础篇⑤ ESP8266 SPI通信和I2C通信
- ESP8266开发之旅 基础篇⑥ Ticker——ESP8266定时库
二、网络篇
- ESP8266开发之旅 网络篇① 认识一下Arduino Core For ESP8266
- ESP8266开发之旅 网络篇② ESP8266 工作模式与ESP8266WiFi库
- ESP8266开发之旅 网络篇③ Soft-AP——ESP8266WiFiAP库的使用
- ESP8266开发之旅 网络篇④ Station——ESP8266WiFiSTA库的使用
- ESP8266开发之旅 网络篇⑤ Scan WiFi——ESP8266WiFiScan库的使用
- ESP8266开发之旅 网络篇⑥ ESP8266WiFiGeneric——基础库
- ESP8266开发之旅 网络篇⑦ TCP Server & TCP Client
- ESP8266开发之旅 网络篇⑧ SmartConfig——一键配网
- ESP8266开发之旅 网络篇⑨ HttpClient——ESP8266HTTPClient库的使用
- ESP8266开发之旅 网络篇⑩ UDP服务
- ESP8266开发之旅 网络篇⑪ WebServer——ESP8266WebServer库的使用
- ESP8266开发之旅 网络篇⑫ 域名服务——ESP8266mDNS库
- ESP8266开发之旅 网络篇⑬ SPIFFS——ESP8266 Flash文件系统
- ESP8266开发之旅 网络篇⑭ web配网
- ESP8266开发之旅 网络篇⑮ 真正的域名服务——DNSServer
- ESP8266开发之旅 网络篇⑯ 无线更新——OTA固件更新
三、应用篇
- ESP8266开发之旅 应用篇① 局域网应用 ——炫酷RGB彩灯
- ESP8266开发之旅 应用篇② OLED显示天气屏
- ESP8266开发之旅 应用篇③ 简易版WiFi小车
四、高级篇
- ESP8266开发之旅 进阶篇① 代码优化 —— ESP8266内存管理
- ESP8266开发之旅 进阶篇② 闲聊Arduino IDE For ESP8266配置
- ESP8266开发之旅 进阶篇③ 闲聊 ESP8266 Flash
- ESP8266开发之旅 进阶篇④ 常见问题 —— 解决困扰
- ESP8266开发之旅 进阶篇⑤ 代码规范 —— 像写文章一样优美
- ESP8266开发之旅 进阶篇⑥ ESP-specific APIs说明
Ticker是Arduino Core For ESP8266 内置的一个定时器库,这个库用于规定时间后调用函数。
Ticker的功能非常简单,就是规定时间后调用函数。所以读者可以发现本章节非常简短,可以快速了解使用。
老规矩,先上一个博主总结的百度脑图:
总体上,根据功能可以把方法分为两大类:
函数说明:
/**
* 停止Ticker
*/
void detach();
函数说明:
/**
* Ticker是否激活状态
* @return bool true表示ticker启用
*/
bool active();
函数说明:
/**
* xx秒后只执行一次
* @param seconds 秒数
* @param callback 回调函数
*/
void once(float seconds, callback_function_t callback);
/**
* xx秒后只执行一次
* @param seconds 秒数
* @param callback 回调函数
* @param arg 回调函数的参数
*/
void once(float seconds, void (*callback)(TArg), TArg arg)
callback_function_t定义如下:
typedef std::function<void(void)> callback_function_t;
/**
* xx毫秒后只执行一次
* @param seconds 秒数
* @param callback 回调函数
*/
void once_ms(float seconds, callback_function_t callback)
/**
* xx毫秒后只执行一次
* @param seconds 秒数
* @param callback 回调函数
* @param arg 回调函数的参数
*/
void once_ms(uint32_t milliseconds, void (*callback)(TArg), TArg arg);
函数说明:
/**
* 每隔xx秒周期性执行
* @param seconds 秒数
* @param callback 回调函数
*/
void attach(float seconds, callback_function_t callback);
/**
* 每隔xx秒周期性执行
* @param seconds 秒数
* @param callback 回调函数
* @param arg 回调函数的参数
*/
void attach(float seconds, void (*callback)(TArg), TArg arg)
函数说明:
/**
* 每隔xx毫秒周期性执行
* @param seconds 秒数
* @param callback 回调函数
*/
void attach_ms(float seconds, callback_function_t callback);
/**
* 每隔xx毫秒周期性执行
* @param seconds 秒数
* @param callback 回调函数
* @param arg 回调函数的参数
*/
void attach_ms(uint32_t milliseconds, void (*callback)(TArg), TArg arg)
注意点:
实例说明:
板载LED 0.3s 慢闪,然后 0.1s快闪,最后常亮;
源码:
/**
* 代码功能:板载LED开始0.3秒闪,然后快闪,最后常亮
*/
#include
Ticker flipper;
int count = 0;
void flip() {
int state = digitalRead(LED_BUILTIN); // get the current state of GPIO1 pin
digitalWrite(LED_BUILTIN, !state); // set pin to the opposite state
++count;
// 当翻转次数达到20次的时候,切换led的闪烁频率,每隔0.1s翻转一次
if (count == 20) {
flipper.attach(0.1, flip);
}
// 当次数达到120次的时候关闭ticker
else if (count == 120) {
flipper.detach();
}
}
void setup() {
//LED_BUILTIN 对应板载LED的IO口
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
//每隔0.3s 翻转一下led状态
flipper.attach(0.3, flip);
}
void loop() {
}
注意点:
各位读者可以查阅源码中的位置,就会发现有很多常用的板子(博主这里使用到的NodeMcu)。
实例说明:
板载LED 来回快速闪烁
源码:
#include
Ticker tickerSetHigh;
Ticker tickerSetLow;
void setPin(int state) {
digitalWrite(LED_BUILTIN, state);
}
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(1, LOW);
// 每隔25ms调用一次 setPin(0)
tickerSetLow.attach_ms(25, setPin, 0);
// 每隔26ms调用一次 setPin(1)
tickerSetHigh.attach_ms(26, setPin, 1);
}
void loop() {
}
本篇章非常简单,就是一个Ticker定时器的使用,请读者快速翻阅;