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

news/2024/11/16 10:28:07/

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


http://www.ppmy.cn/news/892705.html

相关文章

ESP32-WROOM-32E,MQTT报错mqtt_message_receive:transport_read() error:errno=128

ESP32-WROOM-32E,MQTT使用采坑经验之transport_read() error:errno128 配置MQTT的是 esp_mqtt_client_config_t 结构体&#xff0c;里面包含了MQTT的信息&#xff0c;可根据具体场景配置。 问题 使用MQTT建立连接后&#xff0c;不收发数据&#xff0c;每隔35秒会有如下报错&…

【Intel Parallel编译器(icc icpc ifort)Linux-centos7系统安装配置】

(toc) Intel Parallel编译器(icc icpc ifort)Linux系统安装配置 本篇文章主要讲解在linux系统centos7.5/centos7.9版本中&#xff0c;Intel编译器的安装、环境导入、并行库调用以及在不同centos版本中安装时缺少32位库的解决方案等内容。 一、★Intel编译器定义 Intel Paralle…

x64保护模式_IA-32e

IA-32e 内核x64位&#xff0c;内核是64位的&#xff0c;用户可以是64也可以是32位。但是内核一定是64位的。 强制平坦段&#xff0c;段基址必须是0&#xff0c;不支持TSS段切换了。把32位硬件不用的给删了。 MSR寄存器 这是x64独有的。 MSR寄存器c0000080如果位81&#xf…

【操作系统】X86架构的64位操作系统探索

背景 8086 系列芯片的成功带领英特尔 IA-32 指令集架构占据芯片市场的主导地位。20 世纪末&#xff0c;英特尔与惠普一同针对 64 位芯片展开研究&#xff0c;并推出 IA-64 指令集架构。然而&#xff0c;该架构与已经流行的 IA-32 架构不兼容&#xff0c;这导致它的发展受到阻碍…

启明云端分享|乐鑫ESP32-WROOM-32E和ESP32-WROOM-32UE两款模组的区别

提示&#xff1a;ESP32-WROOM-32E 和 ESP32-WROOM-32UE 是两款通用型 Wi-FiBTBLE MCU 模组&#xff0c;功能强大&#xff0c;用途广 泛&#xff0c;可以用于低功耗传感器网络和要求极高的任务&#xff0c;例如语音编码、音频流和 MP3 解码等。 这两款模组在应用中&#xff0c;有…

import错误:undefined symbol: _ZN6caffe26detail37_typeMetaDataInstance_preallocated_32E

在使用DCN_V2时遇到了这个错误&#xff0c; 发现还是这个包没装好得原因&#xff0c;所以解决办法就是&#xff0c;cd进入这个包的文件夹 然后依次操作这两句 cd /root/data/snake-master/lib/csrc/extreme_utils rm -r build python setup.py develop 问题解决&#xff01;…

情感分析之情绪原因识别

一. 情绪原因识别概述 1.1 什么是情绪原因识别 大部分针对情绪分析的研究主要集中在情绪识别和情绪分类方面&#xff0c;只关注情绪的类别&#xff0c;属于比较浅层的情绪分析任务。情绪原因识别是近年来出现的深层次文本分析与理解的研究&#xff0c;它能针对文本中出现的情…

ESP32学习笔记(一) 芯片型号介绍

ESP32学习笔记(一) 芯片型号介绍 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCodeplatformio ESP32学习笔记(三) 硬件资源介绍 ESP32学习笔记(四) 串口通信 ESP32学习笔记(五) 外部中断 ESP32学习笔记(六) 定时器 ESP32学习笔记(七) 复位和时钟 …