Contents ...
udn網路城邦
使用單顆按鈕控制led燈方向
2025/01/03 21:48
瀏覽49
迴響0
推薦0
引用0


程式碼:


//const byte forwardBtnPin = 2;

const byte forwardBtnPin = 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


// 目前在哪個 LED 上進行亮滅

int ledIdx = 0;


void setup()

{

  pinMode(forwardBtnPin, INPUT_PULLUP);

//  pinMode(backwardBtnPin, INPUT_PULLUP);

  attachInterrupt(digitalPinToInterrupt(forwardBtnPin), forwardInterrupt, FALLING);

//  attachInterrupt(digitalPinToInterrupt(backwardBtnPin), backwardInterrupt, CHANGE);


}


void loop()

{  

   if (forward) {

    //moveLEDLeftToRight();

     ledIdx += 1;

     if(ledIdx >= num) ledIdx = 0;

  } else {

    //moveLEDRightToLeft();

     ledIdx -= 1;

     if(ledIdx <= 0) ledIdx = num - 1;

  }

  blink();

}


void blink() {

 digitalWrite(ledPins[ledIdx], HIGH); // 點亮 LED

 delay(200);                     // 延遲 200 毫秒

 digitalWrite(ledPins[ledIdx], LOW);  // 熄滅 LED

 delay(200);        

}



void forwardInterrupt() {

  forward=!forward;

}

/*  void  backwardInterrupt(){

    

    backward=true;

    forward=false;

  }*/


限會員,要發表迴響,請先登入