---
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 燈全部熄滅的==程式==。
- 電路圖: 
- 利用問題二的程式碼 + 以下範本可以進行改動來實現。
```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) 是在做什麼
}
```