单片机
返回首页

玩转 ESP32 + Arduino (四) 电容按键 霍尔传感器 外部中断 延时 脉冲检测

2025-04-07 来源:jianshu

一. 电容输入 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:%dn',touchRead(4));}
touchAttachInterrupt(pin, TSR , threshold)

参数:

  • TSR :中断回调函数, 不能带参数, 不能有返回值。

  • threshold:阈值, 达到该阈值会触发此中断

void TSR(){
  Serial.printf('我被按下了!rn');
  }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 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);}


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 家用电器遥控器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • DS1669数字电位器

  • HA1377 桥式放大器 BCL 电容 17W(汽车音频)

    相关电子头条文章