วันนี้มีลูกค้ามาให้ช่วยดูปัญหาการใช้งาน ESP32Servo ครับ โดยมีปัญหา compile error ดังนี้ครับ
/Users/dev/Documents/Arduino/libraries/ESP32Servo/src/ESP32PWM.cpp: In destructor 'virtual ESP32PWM::~ESP32PWM()':
/Users/dev/Documents/Arduino/libraries/ESP32Servo/src/ESP32PWM.cpp:53:17: error: 'ledcDetachPin' was not declared in this scope; did you mean 'ledcDetach'?
53 | ledcDetachPin(pin);
| ^~~~~~~~~~~~~
| ledcDetach
/Users/dev/Documents/Arduino/libraries/ESP32Servo/src/ESP32PWM.cpp: In static member function 'static double ESP32PWM::_ledcSetupTimerFreq(uint8_t, double, uint8_t)':
/Users/dev/Documents/Arduino/libraries/ESP32Servo/src/ESP32PWM.cpp:60:16: error: 'ledcSetup' was not declared in this scope
60 | return ledcSetup(chan, freq, bit_num);
....
....
Using library ESP32Servo at version 1.2.1 in folder: /Users/dev/Documents/Arduino/libraries/ESP32Servo
exit status 1
Compilation error: exit status 1
ซึ่งปัญหานี้เกิดจากการใช้งานไลบรารี ESP32Servo ที่ไม่สามารถใช้งานได้กับ ESP32 ที่เป็น Board firmware เวอร์ชั่น 3.0.0 ที่พึ่งออกมาให้ update ใหม่ได้ครับ พอหลายคนไม่เคยโหลด Arduino IDE หรือพึ่งเคยใช้ ESP32 ครั้งแรกแล้วไปโหลดใน Board Manager ก็จะได้เวอร์ชั่นใหม่ที่เป็น 3.0.0 ที่มีปัญหานี้ครับ
วิธีแก้ไขคือให้ downgrade กลับไปใช้ 2.x.x ก่อนดังนี้
เท่านี้ก็จะแก้ไขปัญหาได้ครับ การแก้ปัญหานี้อาจจะชั่วคราว หากตัว esp32servo มีการอัพเดทใหม่ๆ ที่แก้ปัญหานี้ไปแล้ว ก็สามารถอัพเดทกลับมาใช้ 3.0.0 หรือเวอร์ชั่นใหม่เก่าที่มีฟังก์ชันใช้งานร่วมกับ library ตัวนี้ได้ครับ
ผู้เขียน: ธนบดี บุหลันศรีชาติ