---
# System prepended metadata

title: 第十周周記

---

## 第十周周記

- Arduino 學習紀錄

    - 超音波程式碼
    ```
    //超音波測距模組HC-SR04
    const byte trigPin=12; //超音波測距的 觸發腳
    const byte echoPin=13; //超音波測距的 回應腳
    float d;

    void setup() {
      //設定輸出輸入
      pinMode(trigPin, OUTPUT);
      pinMode(echoPin, INPUT); 

      //開啟串例傳輸
      Serial.begin(9600);
    }

    void loop() {
      //測距離
      d = sr04() * 0.017; 
      Serial.print(d,1);
      Serial.println("cm");
      delay(1000);
    }

    //超音波測距函式  
    //送 10μs 脈波給 HC-SR04 觸發腳(trigger pin)，並計算 回應腳(echo)變成高電位的時間
    unsigned long sr04() { 
      digitalWrite(trigPin, HIGH);
      delayMicroseconds(10);  
      digitalWrite(trigPin, LOW);
      return pulseIn(echoPin, HIGH);
    }

    ```

    - 伺服馬達
    ```
    #include <Servo.h>   //載入函式庫，這是內建的，不用安裝

    Servo myservo;  // 建立SERVO物件


    void setup() {
      myservo.attach(9);  // 設定要將伺服馬達接到哪一個PIN腳
      Serial.begin(9600);
    }

    void loop() {   
      myservo.write(0);  //旋轉到0度，就是一般所說的歸零
      Serial.println("0 degree");
      delay(1000);
      myservo.write(90); //旋轉到90度
      Serial.println("90 degree");
      delay(1000);
      myservo.write(180); //旋轉到180度
      Serial.println("180 degree");
      delay(1000);
      myservo.write(90);
      Serial.println("90 degree");
      delay(1000);
    }
    ```
    - 紅外線感測器 + 伺服馬達
    `乾沒存到檔案...太虧了...`

- 專案進度

  研究樓梯升降的實作方式，目前想用馬達卡進捲線器去拉放樓梯使其升降，每次升降的高度是以階層來看的 ( 例如一階是 5 cm
)，總共有 7 階，升降的高度就會落在這個範圍裏面，如此也好觸發小人移動的條件 ( 前面的樓梯比現在的樓梯高一階 )，目前會先做一個樓梯搭配馬達和捲線器的 prototype，可惜今日預約的雷切機突然壞掉了，所以進度可能會延宕 QQ

- 自學筆記

  有找了別人用 Ardunio 做電梯的範例、順便研究了滑輪的原理，然後想到現在這個方式
  
- 其他問題
  
  因為我們總共會有七個樓梯，但每個樓梯的感測器和上升下降高度是 random 的，這樣想必就要有七個馬達分開控制捲線器，有沒有什麼比較不浪費資源的方式呀~