# 第十二週週記 ###### tags: `徐薪淳` `第十二週` ## 紅外線控制馬達 **前提小疑問**:不知道為什麼wokwi上面沒有直流馬達的模擬器?我全部都按過了xd **程式碼**: include <IRremote.h> int RECV_PIN = 2; // (使用數位腳位2接收紅外線訊號) IRrecv irrecv(RECV_PIN); // (初始化紅外線訊號輸入) decode_results results; // int sspeed; void setup() { irrecv.enableIRIn(); // (啟動接收) Serial.begin(9600); pinMode(8, OUTPUT); pinMode(9, OUTPUT); sspeed = (int)(150); } void loop() { if (IR.decode()) { Serial.println(IR.decodedIRData.decodedRawData, HEX); if(IR.decodedIRData.decodedRawData == 0xEV13FF00){ // + = EA15FF00 正轉 forward(); } if(IR.decodedIRData.decodedRawData == 0xF907FF00){ // - = F807FF00 反轉 backward(); } if(IR.decodedIRData.decodedRawData == 0xF806FF00){ // EQ= F609FF00 停下來 stop(); } delay(1000); IR.resume(); } } // Describe this function… void forward() { digitalWrite(8, LOW); analogWrite(9, sspeed); } // Describe this function… void backward() { digitalWrite(8, HIGH); analogWrite(9, sspeed); } // Describe this function… void stop() { digitalWrite(8, LOW); analogWrite(9, 0); } ## 為何使用digitalread的數值會介於0-1023? 因為數位訊號只能顯示0跟1,為了讓他可以去使用更多元的類比訊號,每支類比腳都可提供 10 位元的解析 (即 0 ~ 1023的數值),我的理解就是0跟1兩個選項的10次方去讓他有1024種組合,而從零開始讀取似乎是程式的設定?(因為我寫python的數列也是從0開始算第一個),而這些類比訊號可用analogRead(腳號)讀取。 ## 本週實作心得 不知道為什麼連接上好像有點問題,大概弄了一個多小時,程式沒有錯,也有成功上傳程式碼完畢,但就是不知道為啥沒有好好的運作,也謝謝老師、小老大、助教來關心我們的狀況,我們這桌可能有什麼神秘訊號干擾,每次都會有硬體操作上的問題,最後有成功試出最一開始的程式碼,但後面的程式碼要試的時候又不理我們了qqq。 原本很期待能夠使用紅外線遙控器!也拿了超多跳線,但我就這麼被隔離了,連電池都沒辦法去買QQQQ 另外是我們主要會用到的是紅外線測距及藍芽模組(可能會),所以想許願這兩個!感謝老師也辛苦了!