---
# System prepended metadata

title: 第十二週週記
tags: [徐薪淳, 第十二週]

---

# 第十二週週記
###### 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
另外是我們主要會用到的是紅外線測距及藍芽模組（可能會），所以想許願這兩個！感謝老師也辛苦了！