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

本文主要是介绍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 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的内容。

这篇关于ESP32 Arduino框架入门(二)外部中断和TouchPad(电容触摸引脚)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/226705

相关文章

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

C#通过进程调用外部应用的实现示例

《C#通过进程调用外部应用的实现示例》本文主要介绍了C#通过进程调用外部应用的实现示例,以WINFORM应用程序为例,在C#应用程序中调用PYTHON程序,具有一定的参考价值,感兴趣的可以了解一下... 目录窗口程序类进程信息类 系统设置类 以WINFORM应用程序为例,在C#应用程序中调用python程序

POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能

《POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能》ApachePOI是一个流行的Java库,用于处理MicrosoftOffice格式文件,提供丰富API来创建、读取和修改O... 目录前言:Apache POIEasyPoiEasyExcel一、EasyExcel1.1、核心特性

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis