如果手头只有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”,灯光切换有什么改变?
外部中断程序设计关键
程序代码
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(); }
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...