按键控制流水灯左右来回一次后停止
时间: 2023-08-18 10:05:18 浏览: 88
好的,我了解了你的问题。你需要一个按键控制流水灯左右来回移动,移动一次后停止的程序。以下是一个简单的示例代码,可以实现这个功能。在这个代码中,我们使用了 Arduino UNO 板,将三个 LED 分别连接到数字引脚 8、9 和 10 上,将按键连接到数字引脚 2 上。
```
const int ledPins[] = {8, 9, 10};
const int buttonPin = 2;
int currentLed = 0;
int direction = 1; // 1 表示向右移动,-1 表示向左移动
void setup() {
// 初始化 LED 引脚为输出模式
for (int i = 0; i < 3; i++) {
pinMode(ledPins[i], OUTPUT);
}
// 初始化按键引脚为输入模式
pinMode(buttonPin, INPUT);
}
void loop() {
// 检测按键是否按下
if (digitalRead(buttonPin) == HIGH) {
// 如果按键按下,则停止移动
for (int i = 0; i < 3; i++) {
digitalWrite(ledPins[i], LOW);
}
return;
}
// 移动 LED
digitalWrite(ledPins[currentLed], LOW); // 关闭当前 LED
currentLed += direction;
if (currentLed < 0) {
currentLed = 1;
direction = 1;
} else if (currentLed > 2) {
currentLed = 1;
direction = -1;
}
digitalWrite(ledPins[currentLed], HIGH); // 打开下一个 LED
delay(100); // 延迟一段时间,使移动看起来更流畅
}
```
在这个代码中,我们使用了一个 `currentLed` 变量来记录当前亮着的 LED 编号,使用一个 `direction` 变量来记录移动方向。在每次循环中,我们检测按键是否按下,如果按下则停止移动。否则,我们关闭当前亮着的 LED,计算下一个应该亮的 LED 编号,打开下一个 LED,然后延迟一段时间,使移动看起来更流畅。当移动到边缘时,我们改变移动方向,以便反向移动。
阅读全文