4.电容按键 霍尔传感器 外部中断 延时 脉冲检测

一. 电容输入 touchRead(pin) 及电容输入中断touchAttachInterrupt(pin, TSR , threshold)

ESP32专门提供了电容触摸传感器的功能, 共有T0,T2~T9 共 9个touch传感器可用.分别对应引脚4、2、15、13、12、14、27、33、32. 无需设置PinMode

touchRead(pin)
返回值 0~255. 触摸强度
注意: 摸得越瓷实,数值越小
void setup()
{
  Serial.begin(9600);
}
 
void loop()
{
   Serial.printf("touch:%d\n",touchRead(4));
}

touchAttachInterrupt(pin, TSR , threshold)
参数:
TSR :中断回调函数, 不能带参数, 不能有返回值。
threshold:阈值, 达到该阈值会触发此中断
void TSR()
{
  Serial.printf("我被按下了!\r\n");
}
 
void setup()
{
  Serial.begin(9600);
  touchAttachInterrupt(4, TSR , 20);
}
 
void loop()
{
  
}

二. 霍尔传感器

ESP32自带霍尔传感器 , 当有磁场靠近时,会显示正负值
hallRead()


三. 外部中断

1. 开启外部中断 attachInterrupt(pin,function,mode);
参数:
pin: 外部中断引脚
function : 外部中断回调函数
mode : 5种外部中断模式, 见下表:
中断触发模式 说明
RISING 上升沿触发
FALLING 下降沿触发
CHANGE 电平变化触发
ONLOW 低电平触发
ONHIGH 高电平触发
void func1()
{
  Serial.printf("按键中断触发");
  }
void setup()
{
  Serial.begin(9600);
  attachInterrupt(0,func1,FALLING);
}
 
void loop()
{
  
}

2. 关闭引脚中断 detchInterrupt(pin);
无返回值

四. 时间统计函数

1. 开机至今的毫秒数 millis
millis() 返回值是unsigned long 类型, 大约50天溢出一次

2. 开机至今的微秒数 micros
micros() 返回值是unsigned long 类型, 大约70分钟溢出一次

五. 阻塞延时

时间控制函数
由于我们接下来的实验程序很多都用到延时函数,那么这里就介绍几个:

delay() ----- 毫秒级延时
delayMicroseconds() ----- 微秒级延时

硬件定时器相关请见第六篇

六. 引脚脉冲信号检测 pulseIn()

pulseIn(pin,state)
pulseIn(pin,state,timeout)
参数:
pin : 引脚
state : 脉冲类型, 可选高或者低
timeout : 超时时间, 默认1秒钟. 单位为微秒, 无符号长整型.
返回值: 脉冲宽度, 单位微秒, 数据类型为无符号长整型. 如果超时返回0

例: 使用SR04超声波测距


板上接线方式,VCC、trig(控制端)、 echo(接收端)、 out(空脚)、 GND


#include <Arduino.h>
int distance = 0;
void setup()
{
  Serial.begin(115200);
  pinMode(4, OUTPUT);
  digitalWrite(4, LOW);
}
 
void loop()
{
  digitalWrite(4, HIGH);
  delayMicroseconds(20);
  digitalWrite(4, LOW);
  distance = pulseIn(18,HIGH)/58;
  Serial.printf("当前距离是:%d cm",distance);
  delay(1000);
}

————————————————
链接:https://blog.csdn.net/finedayforu/article/details/108465009

 


评论:
相关文章
ESP-Hosted 入门介绍 &使用指南

ESP-Hosted 解决方案提供了将 ESP 板用作 Wi-Fi 和 Bluetooth/BLE 连接的通信处理器的方法。


设备上云太麻烦?ESP-Hosted一站触达!

ESP-Hosted 提供了一种将ESP芯片和模组用作通信协处理器的解决方案,该解决方案为主机微处理器或微控制器提供无线连接,使主机能够与其他设备通信。简单来说为网卡方案。


ESP32 + Arduino使用TFT_eSPI库

Arduino+ESP32上使用TFT_eSPI库快速点亮这个屏幕,驱动芯片ST7789


ESP32 利用 SPI 连通 TFT 彩屏

本文给出了一个ESP32与SPI 接口TFT显示屏接线的详细说明,供大家参考。


在Micropython下使用ESPNow功能进行数据传输

本文讲解如何在Micropython环境下使用ESP32的ESPNow功能进行数据传输。


用 ESP32-S3 打造多功能 USB Dongle

ESP-Dongle 是一款基于 ESP32-S3 芯片开发的多功能 USB Device 解决方案。它不仅外形小巧,功能齐全,更集成了无线 U 盘、SD 卡读取以及 USB 无线网卡等多项功能。


利用 ESP32-S3 和 CSI 技术打造智能家居

ESP32 系列芯片可以利用 CSI 数据实现动作检测和存在检测。无论是自动调节灯光、风扇,还是节能控制,CSI 技术为智能家居带来了新的可能性。随着 CSI 技术的发展,未来的智能家居将能够更精确地感知和响应我们的行为,实现更高效、更人性化的控制。


ESP32-FreeRTOS:大量FreeRTOS实例,供参考学习

ESP32-FreeRTOS项目提供了丰富的示例,帮助开发者快速掌握ESP32的硬件功能和FreeRTOS实时操作系统。


物联网项目开发实战-第3章-自动浇花项目迭代3

本节我们在迭代二的基础上使用四位数码管和OLED显示屏显示相关交互信息。


物联网项目开发实战-第3章-自动浇花项目迭代2

本节我们在迭代一的基础上增加采集土壤湿度数据,并根据湿度数据来决定是否自动进行浇水动作。

玩转 ESP32 + Arduino

作者:finedayforu@CSDN   共24讲

玩转 ESP32 + Arduino