// 廣域變數(到處可用)
int LED[8] = {15, 16, 17, 18, 19, 21, 22, 23}; // 宣告一個整數陣列,名稱為LED,內容物共8筆
void setup() {
// 宣告輸出腳
for(int i=0; i<=7; i++)
{
pinMode(LED[i], OUTPUT); // 宣告LED[0]~LED[7]其對應的接腳為輸出腳
}
//all_on(); //全亮
all_on();
delay(800);
all_off(); //全滅
delay(800);
//all_on(); //全亮
all_on();
delay(800);
all_off(); //全滅
delay(800);
}
void loop() {
left_to_right(200, 30); // 左快去,右慢回
right_to_left(200, 30); // 右慢去,左快回
all_on(); //全亮
all_off(); //全滅
all_on(); //全亮
all_off(); //全滅
all_on(); //全亮
all_off(); //全滅
two_led_left_right(200,20);
two_led_right_left(200,20);
all_off(); //全滅
}
// 全滅
void all_off()
{
for(int i=0; i<=7; i++)
{
digitalWrite(LED[i], 1); // 令LED[0]~LED[7]其對應的接腳為HIGH
}
}
// 全亮
void all_on()
{
for(int i=0; i<=7; i++)
{
digitalWrite(LED[i], 0); // 令LED[0]~LED[7]其對應的接腳為LOW
}
}
// 亮某幾個燈
void led_on(int x, int y) // 帶參數
{
for(int i=x; i<=y; i++)
{
digitalWrite(LED[i], 0); // 令LED[0]~LED[7]其對應的接腳為LOW
Serial.print(x);
Serial.print(",");
Serial.println(y);
}
}
//三個led連在一起左去右回
void two_led_left_right(int x, int y)
{
for (int i = 0; i <= 5; i++)
{
digitalWrite(LED[i], 0); // 令LED[0]~LED[7]其對應的接腳為LOW
digitalWrite(LED[i] + 1, 0);
delay(x);
digitalWrite(LED[i], 1); // 令LED[0]~LED[7]其對應的接腳為LOW
digitalWrite(LED[i] + 1, 1);
delay(y);
}
for (int i = 7; i >= 0; i--)
{
digitalWrite(LED[i], 0); // 令LED[0]~LED[7]其對應的接腳為LOW
digitalWrite(LED[i] - 1, 0);
delay(x);
digitalWrite(LED[i], 1); // 令LED[0]~LED[7]其對應的接腳為LOW
digitalWrite(LED[i] - 1, 1);
delay(y);
}
}
//三個led連在一起右去左回
void two_led_right_left(int x, int y)
{
for (int i = 7; i >= 0; i--)
{
digitalWrite(LED[i], 0); // 令LED[0]~LED[7]其對應的接腳為LOW
digitalWrite(LED[i] - 1, 0);
delay(x);
digitalWrite(LED[i], 1); // 令LED[0]~LED[7]其對應的接腳為LOW
digitalWrite(LED[i] - 1, 1);
delay(y);
}
for (int i = 0; i <= 5; i++)
{
digitalWrite(LED[i], 0); // 令LED[0]~LED[7]其對應的接腳為LOW
digitalWrite(LED[i] + 1, 0);
delay(x);
digitalWrite(LED[i], 1); // 令LED[0]~LED[7]其對應的接腳為LOW
digitalWrite(LED[i] + 1, 1);
delay(y);
}
}
// 由左到右,流水燈
void left_to_right(int t1, int t2) // 帶參數 t1, t2
{
for (int i = 7; i >= 0; i--)
{
digitalWrite(LED[i], 0);
delay(t1);
digitalWrite(LED[i], 1);
delay(t2);
}
for (int i = 0; i <= 7; i++)
{
digitalWrite(LED[i], 0);
delay(t1);
digitalWrite(LED[i], 1);
delay(t2);
}
}
// 由右到左,流水燈
void right_to_left(int t1, int t2) // 帶參數 t1, t2
{
for (int i = 0; i <= 7; i++)
{
digitalWrite(LED[i], 0);
delay(t1);
digitalWrite(LED[i], 1);
delay(t2);
}
for (int i = 7; i >= 0; i--)
{
digitalWrite(LED[i], 0);
delay(t1);
digitalWrite(LED[i], 1);
delay(t2);
}
}