☛ 功能說明
利用 Arduino 開發板 PWM 訊號輸出接腳 5、6、9、10 控制四個 LED 產生右移雨滴變化。
☛ 使用材料
Arduino UNO R3 開發板 × 1、電阻 220Ω × 4、紅色 LED × 4。
☛ 電路圖及麵包板接線圖
☛ 程式碼
const int led[]={5,6,9,10}; //LED 連接至 PWM 接腳 5、6、9、10 int varNums; //LED 變化種類 int ledNums; //LED 亮度種類 const int brightness[7][4]= //LED 變化資料 { {250,0,0,0}, //第 1 次 LED 變化 {100,250,0,0}, //第 2 次 LED 變化 {50,100,250,0}, //第 3 次 LED 變化 {5,50,100,250}, //第 4 次 LED 變化 {0,5,50,100}, //第 5 次 LED 變化 {0,0,5,50}, //第 6 次 LED 變化 {0,0,0,5} }; //第 7 次 LED 變化 void setup() { } void loop() { for(varNums=0;varNums<7;varNums++) //雨滴燈變化 { for(ledNums=0;ledNums<4;ledNums++) analogWrite(led[ledNums],brightness[varNums][ledNums]); delay(100); } }
☛ 練習
㈠ 設計 Arduino 程式,利用 Arduino UNO 開發板的 PWM 信號輸出接腳 5、6、9、10 控制四個 LED 產生左移雨滴變化。
const int led[]={5,6,9,10}; //LED 連接至 PWM 接腳 5、6、9、10 int varNums; //LED 變化種類 int ledNums; //LED 亮度種類 const int brightness[7][4]= //LED 變化資料 { {0,0,0,250}, //第 1 次 LED 變化 {0,0,250,100}, //第 2 次 LED 變化 {0,250,100,50}, //第 3 次 LED 變化 {250,100,50,5}, //第 4 次 LED 變化 {100,50,5,0}, //第 5 次 LED 變化 {50,5,0,0}, //第 6 次 LED 變化 {5,0,0,0} }; //第 7 次 LED 變化 void setup() { } void loop() { for(varNums=0;varNums<7;varNums++) //雨滴燈變化 { for(ledNums=0;ledNums<4;ledNums++) analogWrite(led[ledNums],brightness[varNums][ledNums]); delay(100); } }
㈡ 設計Arduino程式,控制四個LED模擬拖尾霹靂燈變化。
const int led[]={5,6,9,10}; //LED 連接至 PWM 接腳 5、6、9、10 int varNums; //LED 變化種類 int ledNums; //LED 亮度種類 int direct=0; //LED 變化方向 const int brightness_R[7][4]= //右移LED變化資料 { {250,0,0,0}, //第 1 次 LED 變化 {100,250,0,0}, //第 2 次 LED 變化 {50,100,250,0}, //第 3 次 LED 變化 {5,50,100,250}, //第 4 次 LED 變化 {0,5,50,100}, //第 5 次 LED 變化 {0,0,5,50}, //第 6 次 LED 變化 {0,0,0,5} }; //第 7 次 LED 變化 const int brightness_L[7][4]= //左移 LED 變化資料 { {0,0,0,250}, //第 1 次 LED 變化 {0,0,250,100}, //第 2 次 LED 變化 {250,100,50,0}, //第 3 次 LED 變化 {250,100,50,5}, //第 4 次 LED 變化 {100,50,5,0}, //第 5 次 LED 變化 {50,5,0,0}, //第 6 次 LED 變化 {5,0,0,0} }; //第 7 次 LED 變化 void setup() { } void loop() { for(varNums=0;varNums<7;varNums++) //雨滴燈變化 { for(ledNums=0;ledNums<4;ledNums++) { if(direct==0) //雨滴燈左移 analogWrite(led[ledNums],brightness_L[varNums][ledNums]); else //雨滴燈右移 analogWrite(led[ledNums],brightness_R[varNums][ledNums]); } delay(100); } if(direct==0) direct=1; else direct=0; }