---
# System prepended metadata

title: 0603/0609 程式碼範本 & Guide
tags: [HW(HomeWork) Guide]

---

---
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) 是在做什麼
  
}
```