下面是一个使用定时器、外部和内部中断的代码示例,实现按一次按钮时,内置LED闪烁1.5秒,再次按下按钮时熄灭。
#include <Arduino.h>
// 按钮引脚
const int buttonPin = 2;
// LED引脚
const int ledPin = LED_BUILTIN;
// 按钮状态标志位
volatile bool buttonPressed = false;
void buttonInterrupt() {
// 更新按钮状态标志位为按下
buttonPressed = true;
}
void setup() {
// 初始化串口通信
Serial.begin(9600);
// 设置按钮引脚为输入模式,启用上拉电阻
pinMode(buttonPin, INPUT_PULLUP);
// 设置LED引脚为输出模式
pinMode(ledPin, OUTPUT);
// 配置外部中断,在按钮引脚上触发下降沿中断,并调用buttonInterrupt函数处理中断事件
attachInterrupt(digitalPinToInterrupt(buttonPin), buttonInterrupt, FALLING);
}
void loop() {
if (buttonPressed) {
// 点亮LED并等待1.5秒钟
digitalWrite(ledPin, HIGH);
delay(1500);
// 关闭LED并清除按钮状态标志位
digitalWrite(ledPin, LOW);
buttonPressed = false;
}
}
这个代码在Arduino开发板上运行,通过配置外部中断来监听按钮的按下事件。当检测到按钮按下(下降沿)时,将内置LED点亮并等待1.5秒钟,然后再熄灭LED。再次按下按钮时,内置LED将会熄灭。
请注意,这个代码假设你正在使用一个支持外部中断的Arduino开发板,并且在按钮引脚上使用了上拉电阻。具体的引脚号和板型可能需要根据实际情况进行调整。
内容由零声教学AI助手提供,问题来源于学员提问




