# 第十二週週記 ### 紅外線遙控馬達 > 廢話不多說先附上這次的程式碼: ```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) >我們兩個有空的時間都剛好錯開嗚嗚嗚,約下課開始實作