2025-09-30
和本書內容直接相關的有:
PWM 輸出相關指令,如 ledcSetup()、ledcAttachPin() 等
指令全部改寫,使用方式不同。詳細請況請登入 mosme 網站 ,作者提供更新的內容。
UART 接腳部份,修改如下圖
RX2 從原本的 16 腳移至 4 腳
TX2 從原本的 17 腳移至 25 腳
理由是 PSRAM(外接記憶體)用到16、17腳。
原始討論串:
https://github.com/espressif/arduino-esp32/issues/9500
本書例 6-7 中第11行指令,修改為
Serial2.begin(16, 17, SERIAL_8N1, 16, 17); //強制指定為 16、17
這樣就可以延用第 16 腳了
症頭:執行 analogWritre() 無法輸出
核心版本:Arduino ESP32核心2.0.9版到2.0.14版 (之後的版本沒測過)
本書第2章類比輸出的部份、及例5-3,會觸碰到Bug。
程式碼如下,必須在analogWrite()前加入Serial.println(),analogWrite()才有功用。
/*
* 例5-3:旋轉可變電阻,改變馬達轉速
* 註:Arduino ESP32 核心有 Bug,在此例必須啟動序列傳輸並列印,功能才會正常
*/
const byte MotorA1 = 32; //馬達第一支接腳
const byte MotorA2 = 33; //馬達第二支接腳
const byte VR = 25; //可變電阻接腳
void setup() {
pinMode(VR, INPUT);
pinMode(MotorA1, OUTPUT);
pinMode(MotorA2, OUTPUT);
Serial.begin(9600); //開啟序列傳輸功能
}
void loop() {
int speed = analogRead(VR); //從可變電阻讀取類比讀值
speed = map(speed, 0, 4095, 0, 255); //透過map()函式轉換數值
Serial.println(speed); //印出轉換後的PWM值
analogWrite(MotorA1, speed); //送至馬達
analogWrite(MotorA2, 0); //另一支腳為0電位
}