arduino 使用按鈕閃爍左移 另一個右移(使用中斷)
2025/01/02 02:04
瀏覽85
迴響0
推薦0
引用0
// 一個按鈕讓LED從【右到左】依序亮滅。
// 另一個按鈕讓LED從【左到右】依序亮滅。
const byte forwardBtnPin = 2;
const byte backwardBtnPin = 3;
//右到左 左到右
volatile bool forward=true;
volatile bool backward=false;
// 低電位 LOW ,LED 暗。 高電位 HIGH,LED 亮
volatile byte state = HIGH;
int ledPins[] = {4,5,6,7,8,9,10,11,12,13}; // The LED pins
int num = sizeof(ledPins) / sizeof(int);
int delayMS = 200; // 延遲時間,單位毫秒 ms
void setup()
{
pinMode(forwardBtnPin, INPUT_PULLUP);
pinMode(backwardBtnPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(forwardBtnPin), forwardInterrupt, CHANGE);
attachInterrupt(digitalPinToInterrupt(backwardBtnPin), backwardInterrupt, CHANGE);
}
void loop()
{
if (forward) {
moveLEDLeftToRight();
} else if (backward) {
moveLEDRightToLeft();
}
}
// 從左到右點亮 LED
void moveLEDLeftToRight() {
for (int i = 0; i < num; i++) {
digitalWrite(ledPins[i], HIGH); // 點亮 LED
delay(200); // 延遲 200 毫秒
digitalWrite(ledPins[i], LOW); // 熄滅 LED
delay(200);
}
}
// 從右到左點亮 LED
void moveLEDRightToLeft() {
for (int i = num - 1; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH); // 點亮 LED
delay(200); // 延遲 200 毫秒
digitalWrite(ledPins[i], LOW); // 熄滅 LED
delay(200); // 延遲 200 毫秒
}
}
void forwardInterrupt() {
forward=true;
backward=false;
}
void backwardInterrupt(){
backward=true;
forward=false;
}
你可能會有興趣的文章:
限會員,要發表迴響,請先登入



