---
# System prepended metadata

title: 第十二週週記

---

# 第十二週週記
### 紅外線遙控馬達
> 廢話不多說先附上這次的程式碼:
 ```c++=
#include <IRremote.h>
int recieve = 3;
IRrecv IR(recieve);
int motorSpeed;

void setup() {
  // put your setup code here, to run once:
  IR.enableIRIn();
  Serial.begin(9600);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  motorSpeed = (int)(100);
}

void loop() {
  // put your main code here, to run repeatedly:
  if(IR.decode()){
    Serial.println( IR.decodedIRData.decodedRawData, HEX );
    
    if( IR.decodedIRData.decodedRawData == FF30CF ){
      digitalWrite(8, LOW);
      analogWrite(9, motorSpeed);
    }
    
    if( IR.decodedIRData.decodedRawData == FF18E7 ){
      digitalWrite(8, HIGH);
      analogWrite(9, motorSpeed);      
    }
    
    if( IR.decodedIRData.decodedRawData == FF7A85){
      digitalWrite(8, LOW);
      analogWrite(9, 0);      
    }
    
    delay(1000);
    IR.resume();
  }
}
```
>我們想讓遙控器按下1,2,3 時，分別讓馬達正轉、反轉、停止。
>但非常難過的是...我們嘗試了好久，卻一直**編譯錯誤**，也找不出問題在哪裡...
>![](https://i.imgur.com/xBjCmil.png)

>附上努力過的證明嗚嗚嗚(八點做到十點:))
>![](https://i.imgur.com/Kikrh0c.png)
>![](https://i.imgur.com/Z8JUo32.png)

>[參考影片連結](https://www.youtube.com/watch?v=0DgALFDwouA)
### 為什麼使用digitalRead得到的值會是0-1023之間
> 其實不是很懂這個問題的意思，就我所知，digitalRead只能讀到HIGH跟LOW(數位訊號)...，所以指的應該是**analogRead**吧!
> 大一的時候有學過，因為Arduino能將讀到的電壓值轉換為**10個bit的數位訊號**，所以經過二進位轉換就是0~1023啦!
### 本週實作心得
>本週使用**直流馬達模組**來控制馬達的正反轉~這邊所說的直流馬達模組應該就是所謂的**H-Bridge**!之前我在週記中有介紹過!
>[這邊附上連結](https://hackmd.io/tmp9gS3PQ2qMoOsgm8c25Q)
>透過給H-Bridge接腳HIGH或LOW來控制它內部的開關已達到控制正反轉的效果。
>除此之外比較酷的地方就是cocoblockly居然也可以包function耶!好可愛!
### 小組進度報告
>專題名稱: 不要靠近我~留情面拒絕器
>各位是否曾經在酒局時被喝醉的怪人騷擾過?當有人一直想抱你時，你就會需要這台「不要靠近我~留情面拒絕器」!
>它會透過超音波感測器偵測你與人之間的距離，當有人離你太近的時候就會亮警示燈及發出警報聲，這時你就可以偷偷按下按鈕，將第三隻手舉起來拒絕他!相信對方喝很醉不會發現第三隻手很怪，只會覺得是有人幫你擋住了~
>不是我拒絕你的，是別人
>我還給你留了點情面，沒直接拒絕你

>草圖設計:
>![](https://i.imgur.com/IsDrQQV.png)
>![](https://i.imgur.com/LEEsHaV.png)

>材料:
>超音波感測器、按鈕、伺服馬達、蜂鳴器、LED

>實作進度:
>畫了接線圖跟買材料算嗎哈哈哈
>![](https://i.imgur.com/gylYGuP.png)
>我們兩個有空的時間都剛好錯開嗚嗚嗚，約下課開始實作
