車體機械結構已搭建完成,包含底盤、雙電機驅動輪、萬向輪、Arduino UNO 主控板、L298N 電機驅動模組、HC-05/HC-06 藍牙模組、電池盒。

| 模組 | 信號 | Arduino 腳位 | 說明 |
|---|---|---|---|
| L298N | ENA | 5 (PWM) | 左電機速度控制 |
| IN1 | 6 | 左電機方向 | |
| IN2 | 7 | 左電機方向 | |
| IN3 | 8 | 右電機方向 | |
| IN4 | 9 | 右電機方向 | |
| ENB | 10 (PWM) | 右電機速度控制 | |
| HC-05/06 | TXD | 0 (RX) | 藍牙發送 → Arduino 接收 |
| RXD | 1 (TX) | Arduino 發送 → 藍牙接收 (需分壓) | |
| VCC/GND | 5V/GND | 供電 |
const int ENA = 5, IN1 = 6, IN2 = 7, IN3 = 8, IN4 = 9, ENB = 10;
char cmd;
void setup() {
pinMode(ENA, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(ENB, OUTPUT);
Serial.begin(9600); // 藍牙模組預設波特率
}
void loop() {
if (Serial.available()) {
cmd = Serial.read();
switch (cmd) {
case 'w': // 前進
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
analogWrite(ENA, 200); analogWrite(ENB, 200);
Serial.println("Forward");
break;
case 's': // 後退
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
analogWrite(ENA, 200); analogWrite(ENB, 200);
Serial.println("Backward");
break;
case 'a': // 左轉 (左輪後退/停、右輪前進)
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
analogWrite(ENA, 150); analogWrite(ENB, 150);
Serial.println("Turn Left");
break;
case 'd': // 右轉
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
analogWrite(ENA, 150); analogWrite(ENB, 150);
Serial.println("Turn Right");
break;
case 't': // 停止
digitalWrite(IN1, LOW); digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);
analogWrite(ENA, 0); analogWrite(ENB, 0);
Serial.println("Stop");
break;
default:
Serial.print("Unknown cmd: "); Serial.println(cmd);
}
}
}
| 字元 | 動作 | 差速邏輯 |
|---|---|---|
w | 前進 | 雙輪同速前進 |
s | 後退 | 雙輪同速後退 |
a | 左轉 | 左輪後退/低速,右輪前進 (原地旋轉或大彎) |
d | 右轉 | 右輪後退/低速,左輪前進 |
t | 停止 | 雙輪剎車 (輸出低電平) |
SoftwareSerial 移至其他腳位本篇完成了從硬體接線到基礎運動控制的閉環。核心在於 L298N 方向邏輯 (IN1/IN2, IN3/IN4) 與 PWM 速度控制 (ENA/ENB) 的協調,以及串口非阻塞輪詢解析單字元指令。下一步可引入狀態機管理複雜行為、編碼器閉環控速、雙核/RTOS 架構提升實時性。