在arduino 里 公用管脚8为输出端 接两个LED灯 按先后顺序 灯亮 代码举例
时间: 2024-10-11 19:12:41 浏览: 27
在Arduino中,如果想让公用管脚(例如PB7或D8)作为输出端驱动两个LED灯,并按顺序依次点亮,你可以使用软件定时器(Software Timer)来实现延时。以下是一个简单的示例代码:
```cpp
#include <TimerOne.h> // 需要在Arduino库管理器安装这个扩展库
const int ledPin1 = 8; // LED1连接到数字管脚8
const int ledPin2 = 9; // LED2连接到数字管脚9,因为题目要求按顺序,所以通常会选择相邻的管脚
TimerOne.initialize(); // 初始化Timer One
void setup() {
pinMode(ledPin1, OUTPUT); // LED1设置为输出
pinMode(ledPin2, OUTPUT); // LED2设置为输出
digitalWrite(ledPin1, LOW); // 初始关闭两个LED
digitalWrite(ledPin2, LOW);
// 设置定时器1,每间隔一定时间触发一个中断,执行nextLed()
attachInterrupt(digitalPinToInterrupt(ledPin1), nextLed, RISING); // 当LED1由低变高时触发
}
void loop() {
// 主循环不做其他事情,只等待中断发生
}
ISR(TIMER1_OVF_vect) { // 中断服务程序,当定时器溢出时执行
nextLed();
}
void nextLed() {
static bool isFirst = true;
if (isFirst) {
digitalWrite(ledPin1, HIGH); // 开启LED1
delayMicroseconds(500000); // 等待500微秒
digitalWrite(ledPin1, LOW); // 关闭LED1
isFirst = false;
} else {
digitalWrite(ledPin2, HIGH); // 开启LED2
delayMicroseconds(500000); // 等待500微秒
digitalWrite(ledPin2, LOW); // 关闭LED2
isFirst = true;
}
}
阅读全文