写一个普通流水灯程序,8盏LED安装在P2端口 ,在P3.0接按钮,控制P2的流水灯,每按一次点亮一盏Led灯,即01234567循环
时间: 2023-12-04 18:02:08 浏览: 85
好的,我可以为您提供一个基于Arduino的普通流水灯程序,代码如下:
```c++
int ledPin[] = {2, 3, 4, 5, 6, 7, 8, 9}; // 8个LED灯的引脚
int buttonPin = 11; // 按钮的引脚
int buttonState; // 按钮状态
int counter = 0; // 计数器
void setup() {
// 初始化每个LED灯的引脚为输出模式
for (int i=0; i<8; i++) {
pinMode(ledPin[i], OUTPUT);
}
// 初始化按钮的引脚为输入模式
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin); // 读取按钮状态
if (buttonState == LOW) { // 如果按钮被按下
delay(50); // 延时去抖
if (buttonState == LOW) { // 如果按钮还是被按下
counter++; // 计数器加1
if (counter == 8) { // 计数器达到8时,复位为0
counter = 0;
}
}
while (buttonState == LOW) { // 等待按钮被释放
buttonState = digitalRead(buttonPin);
}
}
// 将对应的LED灯点亮
for (int i=0; i<8; i++) {
if (i == counter) {
digitalWrite(ledPin[i], HIGH);
} else {
digitalWrite(ledPin[i], LOW);
}
}
}
```
该程序的实现原理和之前提供的51单片机的程序类似,也是通过一个计数器来控制LED灯的亮灭,不同的是这里使用了Arduino的数字输入输出函数来控制LED灯和按钮的状态。程序中同样加入了去抖处理和按键松开等待,使得按键操作更加稳定可靠。
阅读全文