const int LED_COUNT = 7;
const int LED_PINS[LED_COUNT] = {2, 3, 4, 5, 6, 7, 8}; // ขาของ LED ที่ต่อ
volatile int pwmCounter = 0;
volatile int currentLED = 0;
const int PWM_PERIOD = 280; // 28 ms period for PWM signal generation
void setup() {
for (int i = 0; i < LED_COUNT; i++) {
pinMode(LED_PINS[i], OUTPUT); // กำหนดขา LED ทั้งหมดเป็น OUTPUT
}
// Set up Timer 0 for generating PWM signal and enable interrupt
TCCR0A = _BV(WGM01); // CTC mode (Clear Timer on Compare Match)
OCR0A = 111; // 1 ms interrupt interval (1 ms * 111 = 111 ms)
TIMSK0 |= _BV(OCIE0A); // Enable Timer 0 compare match interrupt
}
void loop() {
// Main code runs here
}
ISR(TIMER0_COMPA_vect) {
pwmCounter++;
if (pwmCounter >= PWM_PERIOD) {
pwmCounter = 0;
digitalWrite(LED_PINS[currentLED], LOW); // ปิด LED ที่ต่ออยู่
currentLED = (currentLED + 1) % LED_COUNT; // เลื่อนไป LED ถัดไป
digitalWrite(LED_PINS[currentLED], HIGH); // เปิด LED ที่ใหม่
}
}