ESP32 Arduino框架入门(二)外部中断和TouchPad(电容触摸引脚)

接ESP32 Arduino框架入门(一)介绍和工程创建(8条消息) ESP32 Arduino框架入门(一)介绍和工程创建_长谷深风灯盏的博客-CSDN博客_arduino的esp32软件系统架构        接下来继续介绍ESP32-Wroom-32E的外部引脚、中断、定时器等部分内容

        ESP32的外部引脚功能有ADC,GPIO,I²C,I²S,PWM,SDIO,SPI,UART等,同时还有8个触摸电容引脚。

该图为ESP32-Wroom-32E的引脚对应功能关系:

一、外部中断

ESP32有多种外部中断形式,例如:低电平触发、引脚由低电平变为高电平触发等。接下来介绍如何写外部中断的代码,配置外部中断需要两部分:

 1.初始化中断

 初始化中断需要在setup函数里面写入中断初始化函数:

attachInterrupt(0, Init_Key_LED, FALLING);//初始化中断
//attachInterrupt(digitalPinToInterrupt(pin), ISR, mode);
//pin:中断引脚号
//ISR:中断服务函数名
//mode:中断触发模式

函数内填入中断触发引脚,自己定义的中断服务函数,中断触发方式。中断触发方式有以下几种:(自行翻译即可)

 2.书写中断服务函数

中断服务函数就是自己定义一个函数,函数内书写我们所需要执行的任务的代码,例如:

 此代码就行声明一个中断服务函数,当中断触发时,引脚2输出低电平,并通过串口向电脑发送字符串。

二、TouchPad(电容触摸引脚)

ESP32内置多个电容触摸引脚,即当有物体接触该引脚时,可通过函数读取出一系列变化的值。可通过touchRead(Pin)函数读取此引脚的触摸值

void setup(){

    Serial.begin(115200);	//初始化串口
}

void loop(){

    int value;               //用来记录所触摸引脚的电容值
    value = touchRead(4);    //读取引脚4的电容值
    Serial.printf(value);      //串口显示电容值
}

三、触摸灯

上文已介绍了外部中断和TouchPad,接下来做个小实验,效果有两种:

1.触摸引脚后,使开发板上指示灯亮的效果;

2.按下开发板上的按键,使得LED灯亮,持续按下按键,灯持续亮

#include <Arduino.h>

int value, state;				//value用来判断Pin_4的状态
void Init_Key_LED()				//按键中断服务函数
{
  digitalWrite(2, LOW);
  Serial.printf("KeyInit Event.\r\n");  //串口显示
  delay(100);
  while (1);		//持续按下后一直执行服务函数
}

void TouchLED() //触摸灯函数
{
  digitalWrite(2, state); // Turn HIGH
  Serial.printf("Touch Event.\r\n");      //串口显示
  delay(100);             // Wait for a second
}

void setup()
{
  Serial.begin(115200);			
  pinMode(2, OUTPUT);
  attachInterrupt(0, Init_Key_LED, FALLING);//初始化中断
}

void loop()
{

  value = touchRead(4);				//触摸取值,在loop可以一直检测
  if (value <= 50)
  {
    state = HIGH;				//触摸状态
    TouchLED();					//亮灯
  }
  digitalWrite(2, !state);		//无触摸时灭灯
}

 setup函数中已经初始化了中断,在loop函数(相当于while(1){}),持续不断的检测引脚4的电容触摸值,当触摸值小于50时,引脚2输出高电平,灯亮。

至此,已介绍了ESP32的外部中断和TouchPad,该系列接下来会继续更新关于ESP32的内容。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值