4-2-外部中断信号控制灯光开关

随笔2个月前发布 陈梓贤
34 0 0

如果手头只有ESP32标准开发板(包括S3,C3等等)
建议可以参考教程:ESP32的电容Touch和外部中断
可以利用ESP32自带的电容触摸产生中断控制开发板板载LED亮灭即可。

实训项目:外部中断信号控制灯光开关

编写Arduino程序,在蓝蜻蜓ESP32物联网开发平台上,完成以下的功能:

模块连接

插上GM31模块,将蓝蜻蜓ESP32的15针扩展口U3中的GPIO19和GPIO5短接。

串口初始化

初始化UART0的串口,波特率为115200。

方波信号输出

GPIO19引脚循环输出周期为2秒的方波,输入到GPIO5引脚,作为外部中断信号源。

外部中断设置

GPIO5引脚定义为外部中断引脚,下降沿触发,绑定中断回调函数service_exit5()

中断处理函数

定义一个全局的整型变量num,在service_exit5()中:

首先,对num进行加1累计;
然后,串口0打印输出字符串,统计中断执行的次数:“The count of Exit5:xx”;
接着,翻转开发板上D3灯的开关状态。

代码编译与观察

编译下载代码,观察灯光的翻转变化和串口的输出信息。

思考

将外部中断信号触发方式改为“电平改变CHANGE”,灯光切换有什么改变?

外部中断程序设计关键

4-2-外部中断信号控制灯光开关

程序代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <Arduino.h>

#define d3 14
int num = 0;

void Service_Exit5()
{
	num++;
	Serial.printf("THE Count of Exit5: %d",num);
	Serial.println();
	digitalWrite(d3,!digitalRead(d3));
}

void Send_Plus()
{
	digitalWrite(19,!digitalWrite(19));
	delay(1000);
}

void setup()
{
	Serial.begin(115200);
	pinMode(d3,OUTPUT);
	pinMode(19,OUTPUT);
	attachInterrupt(5,Service_Exit5,FALLING);
}

void loop()
{
	Send_Plus();
}

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...