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

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

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

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

  1. 模块连接
    • 插上GM31模块,将蓝蜻蜓ESP32的15针扩展口U3中的GPIO19和GPIO5短接。
  2. 串口初始化
    • 初始化UART0的串口,波特率为115200。
  3. 方波信号输出
    • GPIO19引脚循环输出周期为2秒的方波,输入到GPIO5引脚,作为外部中断信号源。
  4. 外部中断设置
    • GPIO5引脚定义为外部中断引脚,下降沿触发,绑定中断回调函数service_exit5()
  5. 中断处理函数
    • 定义一个全局的整型变量num,在service_exit5()中:
      • 首先,对num进行加1累计;
      • 然后,串口0打印输出字符串,统计中断执行的次数:“The count of Exit5:xx”;
      • 接着,翻转开发板上D3灯的开关状态。
  6. 代码编译与观察
    • 编译下载代码,观察灯光的翻转变化和串口的输出信息。

思考

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

外部中断程序设计关键

程序代码

#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();
}

posted @ 2024-09-10 22:54  ZHYWJML  阅读(28)  评论(0)    收藏  举报