ESP32 Arduino Ticker定时库

Ticker是ESP32 arduino的自带库,可以设置以固定时间间隔反复执行某个任务,特别适合以固定频率从传感器收集数据。
计时器本质上是一个计数器。让我们举一个简单的例子。如果给你一个可以从0到10计数的计数器,并且每次到达计数结束或溢出时都会给你一个中断,那么,只需调整计数的频率,你就可以得到准确的时间间隔。
在这里插入图片描述

常用方法

void attach(float seconds, callback_t callback)
void attach(float seconds, void (*callback)(TArg), TArg arg)
设置调度任务,该任务会反复执行,输入参数分别为时间间隔(秒)、回调函数、不大于四字节的数据;
void attach_ms(uint32_t milliseconds, callback_t callback)
void attach_ms(uint32_t milliseconds, void (*callback)(TArg), TArg arg)
设置调度任务,该任务会反复执行,输入参数分别为时间间隔(毫秒)、回调函数、不大于四字节的数据;
void once(float seconds, callback_t callback)
void once(float seconds, void (*callback)(TArg), TArg arg)
设置调度任务,该任务只执行一次,输入参数分别为时间间隔(秒)、回调函数、不大于四字节的数据;
void once_ms(uint32_t milliseconds, callback_t callback)
void once_ms(uint32_t milliseconds, void (*callback)(TArg), TArg arg)
设置调度任务,该任务只执行一次,输入参数分别为时间间隔(毫秒)、回调函数、不大于四字节的数据;
void detach()停止任务调度;
详见:https://github.com/espressif/arduino-esp32/blob/master/libraries/Ticker/src/Ticker.h

示例

#include <Ticker.h> //调用Ticker.h库

Ticker ticker1; //声明Ticker对象
Ticker ticker2; //声明Ticker对象

void callback1() //回调函数1
{
  Serial.print(millis());
  Serial.println("  回调函数1已启用");
}

void callback2() //回调函数2
{
  Serial.print(millis());
  Serial.println("  回调函数2已启用");
}

void setup()
{
  Serial.begin(115200);
  Serial.println();

  ticker1.attach(0.5, callback1);   //每0.5秒调用callback1
  ticker2.once_ms(2000, callback2); //2000毫秒后调用一次callback2
}

void loop()
{
}


程序仿真地址:https://wokwi.com/projects/334452637049029202
wokwi在线编程:https://wokwi.com/
在这里插入图片描述

参考链接:

<think>好的,我需要帮助用户找到与ESP32Arduino 3.20相关的资料或教程。首先,我需要确认用户提到的Arduino版本3.20是否正确。目前Arduino IDE的最新版本是2.x,可能用户指的是某个特定的或框架版本,比如Arduino core for ESP32的版本3.0.0?或者是否有可能是笔误? 接下来,我应该查看用户提供的引用内容。引用[1]提到点灯科技的ESP32-Arduino离线安装包,可能涉及安装指南。引用[2]和[3]是关于中断和定时器的教程,可能与用户需求相关。用户需要的是ESP32 Arduino 3.20的教程或文档,但需要明确具体是哪个组件的版本。 首先,检查官方资源。ESP32Arduino core官方文档通常托管在GitHub上,比如espressif/arduino-esp32,其发布版本可能有3.0.0,但不确定是否有3.20版本。可能需要引导用户到官方文档页面。 其次,用户提到的引用[1]中的离线安装包可能对应特定版本的Arduino core,比如点灯科技提供的可能基于某个稳定版本,如2.0.x或3.0.0。需要确认其支持的版本,并建议用户参考安装步骤。 另外,Arduino版本管理有时比较混乱,用户可能混淆了Arduino IDE版本和核心版本。需要明确区分,并建议用户查看正确的文档来源。 用户可能需要具体的使用示例,比如GPIO、中断、定时器等,引用中的示例代码可以作为参考资料。此外,建议用户查阅官方GitHub的文档和示例,以及社区教程如点灯科技提供的资源。 最后,生成相关问题,帮助用户深入探索ESP32开发的相关主题。</think>### 关于ESP32Arduino 3.20的教程与资料整理 根据您的需求,以下是ESP32Arduino开发的相关资源整理,涵盖官方文档、核心版本说明、实用教程及示例代码: --- #### 1. **Arduino核心版本说明** 目前ESP32Arduino核心最新版本为`3.0.0`(截至2024年)[^1]。若您提到的`3.20`为特定分支或自定义版本,建议通过以下方式验证: - **GitHub仓**:访问[espressif/arduino-esp32](https://github.com/espressif/arduino-esp32)查看最新发布版本。 - **版本兼容性**:Arduino IDE建议使用2.x版本,与ESP32核心兼容性更好。 --- #### 2. **快速入门教程** - **开发环境搭建**: - 使用[点灯科技的ESP32-Arduino离线安装包](https://www.diandeng.tech/doc),支持一键安装并集成常用(如WiFi、蓝牙、GPIO控制)[^1]。 - 安装后,在Arduino IDE中选择开发板型号(如ESP32 Dev Module)并配置串口(如COM7)[^1]。 - **基础代码示例**: ```cpp // 示例:GPIO控制与串口通信 #include <Arduino.h> void setup() { Serial.begin(115200); pinMode(4, OUTPUT); } void loop() { digitalWrite(4, HIGH); delay(1000); digitalWrite(4, LOW); delay(1000); Serial.println("Hello ESP32!"); } ``` --- #### 3. **核心功能文档** - **中断与定时器**: - **硬件中断**:通过`attachInterrupt()`实现外部引脚触发,适用于实时响应场景(如传感器信号)[^2]。 - **软件定时器**:使用`Ticker`或FreeRTOS任务模拟定时功能,适合精度要求不高的场景[^3]。 示例代码(定时器中断): ```cpp #include <Ticker.h> Ticker timer; void timerCallback() { Serial.println("Timer triggered!"); } void setup() { timer.attach(1.0, timerCallback); // 每秒触发一次 } void loop() {} ``` - **WiFi与蓝牙**: - 官方提供`WiFi.h`和`BluetoothSerial.h`,支持STA/AP模式、BLE通信等。 --- #### 4. **进阶资源推荐** - **官方文档**: - [Arduino-ESP32核心文档](https://docs.espressif.com/projects/arduino-esp32/en/latest/) - [FreeRTOS API参考](https://www.freertos.org/a00106.html)(ESP32基于FreeRTOS) - **社区教程**: - 点灯科技提供的[ESP32实战项目](https://www.diandeng.tech/doc),涵盖物联网、传感器融合等案例。 - PlatformIO集成开发环境配置(支持更复杂的项目依赖管理)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值