--- tags: HW(HomeWork) Guide --- # 0603/0609 程式碼範本 & Guide ## 問題一:delay example - 如何將 LED 改成個別點亮、個別熄滅? ```C++ // C++ code // void setup() { pinMode(6, OUTPUT); //告訴 Arduino 6 號腳要輸出 pinMode(5, OUTPUT); //告訴 Arduino 5 號腳要輸出 pinMode(3, OUTPUT); //告訴 Arduino 3 號腳要輸出 } void loop() { digitalWrite(6, HIGH); digitalWrite(5, HIGH); digitalWrite(3, HIGH); delay(1000); // Wait for 1000 millisecond(s) digitalWrite(6, LOW); digitalWrite(5, LOW); digitalWrite(3, LOW); delay(1000); // Wait for 1000 millisecond(s) } ``` ## 問題二:millis example - 如何把問題一的 "逐個點亮" 在問題二實現? ```C++ int before_time1 = 0; //回報 "過" 的時間的變數,預設為 0 int before_time2 = 0; int before_time3 = 0; void setup() { pinMode(6, OUTPUT); pinMode(5, OUTPUT); pinMode(3, OUTPUT); } void loop() { if((millis() - before_time1) > 1000) //every 10^(-3) * 1000 s = 1 sec { before_time1 = millis(); //把 "沙漏" 的時間記下來 digitalWrite(6, HIGH); } if((millis() - before_time2) > 1000) { before_time2 = millis(); digitalWrite(5, HIGH); } if((millis() - before_time3) > 1000) { before_time3 = millis(); digitalWrite(3, HIGH); } } ``` ## 問題三:LED 緊急停止電路 - 請實作一個點下開關後就可以使 LED 燈全部熄滅的==程式==。 - 電路圖: ![](https://i.imgur.com/kvTFm51.png) - 利用問題二的程式碼 + 以下範本可以進行改動來實現。 ```C= int before_time1 = 0; //回報 "過" 的時間的變數,預設為 0 int before_time2 = 0; int before_time3 = 0; void setup() { pinMode(6, OUTPUT); pinMode(5, OUTPUT); pinMode(3, OUTPUT); pinMode(13, INPUT); } void loop() { while(digitalRead(13)==0) //這行的意思是在 digitalRead 讀到 "0" 時 //會一直跑 {} 裡面的內容 { if((millis() - before_time1) > 1000) //millis - time = 時間差 { before_time1 = millis(); //把 "沙漏" 的時間記下來 digitalWrite(6, HIGH); } if((millis() - before_time2) > 2000) { before_time2 = millis(); digitalWrite(5, HIGH); } if((millis() - before_time3) > 3000) { before_time3 = millis(); digitalWrite(3, HIGH); } } // 可以在這邊 "加" 東西在下面,請考慮 digitalRead(13) 是在做什麼 } ```