接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 HIGHSerial.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的内容。