I have looked at previous questions relating to this, but none of the solutions seem to fix my problem.
I wish to drive a single servo from a ESP32 C3 Dev module.
I initially tried the generic Arduino servo.h library, but it fails to compile. I gather this chip may not work with the generic library. I have tried several other libraries, as with the same result.
The one I would really like to use (because of its elegance and functionality) is ESP32_ESP32S2_AnalogWrite, but this also will not compile. I do not even get past checking - it just returns a sizeable list of reasons for failing, but I cannot make sense of them.
I get similar messages for all of the examples sketches provided - I haven't even tried my own code yet.
The report below was attempting compile the Servo_Sweep example sketch provided with the library.
Can anyone help me, please?
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'uint8_t Pwm::attach(int)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:55:9: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
55 | ledcSetup(ch, mem[ch].frequency, mem[ch].resolution);
| ^~~~~~~~~
| ledc_stop
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:57:9: error: 'ledcAttachPin' was not declared in this scope; did you mean 'ledcAttach'?
57 | ledcAttachPin(pin, ch);
| ^~~~~~~~~~~~~
| ledcAttach
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'uint8_t Pwm::attach(int, int)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:68:5: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
68 | ledcSetup(ch, mem[ch].frequency, mem[ch].resolution);
| ^~~~~~~~~
| ledc_stop
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:70:5: error: 'ledcAttachPin' was not declared in this scope; did you mean 'ledcAttach'?
70 | ledcAttachPin(pin, ch);
| ^~~~~~~~~~~~~
| ledcAttach
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'uint8_t Pwm::attachInvert(int)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:78:3: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
78 | ledcSetup(ch, mem[ch].frequency, mem[ch].resolution);
| ^~~~~~~~~
| ledc_stop
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'uint8_t Pwm::attachInvert(int, int)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:87:5: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
87 | ledcSetup(ch, mem[ch].frequency, mem[ch].resolution);
| ^~~~~~~~~
| ledc_stop
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'float Pwm::writeServo(int, float)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:180:9: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
180 | ledcSetup(ch, mem[ch].frequency, mem[ch].resolution);
| ^~~~~~~~~
| ledc_stop
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:182:9: error: 'ledcAttachPin' was not declared in this scope; did you mean 'ledcAttach'?
182 | ledcAttachPin(pin, ch);
| ^~~~~~~~~~~~~
| ledcAttach
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'void Pwm::detach(int)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:253:5: error: 'ledcDetachPin' was not declared in this scope; did you mean 'ledcDetach'?
253 | ledcDetachPin(mem[ch].pin); // jitterless
| ^~~~~~~~~~~~~
| ledcDetach
In file included from /Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/soc/esp32c3/include/soc/assist_debug_reg.h:21,
from /Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/riscv/include/riscv/rv_utils.h:12,
from /Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/esp_hw_support/include/esp_cpu.h:18,
from /Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/esp_hw_support/include/spinlock.h:11,
from /Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos/portmacro.h:45,
from /Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/freertos/FreeRTOS-Kernel/include/freertos/portable.h:59,
from /Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/freertos/FreeRTOS-Kernel/include/freertos/FreeRTOS.h:71,
from /Users/davidcdelahaye/Library/Arduino15/packages/esp32/hardware/esp32/3.0.7/cores/esp32/Arduino.h:33,
from /Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:7:
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:254:19: error: 'GPIO_PIN_MUX_REG' was not declared in this scope; did you mean 'GPIO_PIN13_REG'?
254 | REG_SET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL, GPIO_MODE_DEF_DISABLE);
| ^~~~~~~~~~~~~~~~
/Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/soc/esp32c3/include/soc/soc.h:37:37: note: in definition of macro 'REG_WRITE'
37 | (*(volatile uint32_t *)(_r)) = (_v); \
| ^~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:254:5: note: in expansion of macro 'REG_SET_FIELD'
254 | REG_SET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL, GPIO_MODE_DEF_DISABLE);
| ^~~~~~~~~~~~~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:254:42: error: 'MCU_SEL_V' was not declared in this scope
254 | REG_SET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL, GPIO_MODE_DEF_DISABLE);
| ^~~~~~~
/Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/soc/esp32c3/include/soc/soc.h:37:45: note: in definition of macro 'REG_WRITE'
37 | (*(volatile uint32_t *)(_r)) = (_v); \
| ^~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:254:5: note: in expansion of macro 'REG_SET_FIELD'
254 | REG_SET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL, GPIO_MODE_DEF_DISABLE);
| ^~~~~~~~~~~~~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:254:42: error: 'MCU_SEL_S' was not declared in this scope
254 | REG_SET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL, GPIO_MODE_DEF_DISABLE);
| ^~~~~~~
/Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/soc/esp32c3/include/soc/soc.h:37:45: note: in definition of macro 'REG_WRITE'
37 | (*(volatile uint32_t *)(_r)) = (_v); \
| ^~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:254:5: note: in expansion of macro 'REG_SET_FIELD'
254 | REG_SET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL, GPIO_MODE_DEF_DISABLE);
| ^~~~~~~~~~~~~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'bool Pwm::detached(int)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:259:22: error: 'GPIO_PIN_MUX_REG' was not declared in this scope; did you mean 'GPIO_PIN13_REG'?
259 | if ((REG_GET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL)) == 0) return true;
| ^~~~~~~~~~~~~~~~
/Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/soc/esp32c3/include/soc/soc.h:42:37: note: in definition of macro 'REG_READ'
42 | (*(volatile uint32_t *)(_r)); \
| ^~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:259:8: note: in expansion of macro 'REG_GET_FIELD'
259 | if ((REG_GET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL)) == 0) return true;
| ^~~~~~~~~~~~~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:259:45: error: 'MCU_SEL_S' was not declared in this scope
259 | if ((REG_GET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL)) == 0) return true;
| ^~~~~~~
/Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/soc/esp32c3/include/soc/soc.h:67:32: note: in definition of macro 'REG_GET_FIELD'
67 | ((REG_READ(_r) >> (_f##_S)) & (_f##_V)); \
| ^~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:259:45: error: 'MCU_SEL_V' was not declared in this scope
259 | if ((REG_GET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL)) == 0) return true;
| ^~~~~~~
/Users/davidcdelahaye/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-632e0c2a/esp32c3/include/soc/esp32c3/include/soc/soc.h:67:44: note: in definition of macro 'REG_GET_FIELD'
67 | ((REG_READ(_r) >> (_f##_S)) & (_f##_V)); \
| ^~
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:259:55: error: invalid operands of types 'void' and 'int' to binary 'operator=='
259 | if ((REG_GET_FIELD(GPIO_PIN_MUX_REG[pin], MCU_SEL)) == 0) return true;
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~ ~
| |
| int
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'float Pwm::setFrequency(int, uint32_t)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:283:7: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
283 | ledcSetup(ch, frequency, mem[ch].resolution);
| ^~~~~~~~~
| ledc_stop
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'uint8_t Pwm::setResolution(int, uint8_t)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:297:7: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
297 | ledcSetup(ch, mem[ch].frequency, resolution);
| ^~~~~~~~~
| ledc_stop
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'void Pwm::wr_servo(int, float, double, double)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:376:9: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
376 | ledcSetup(ch, mem[ch].frequency, mem[ch].resolution);
| ^~~~~~~~~
| ledc_stop
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:378:9: error: 'ledcAttachPin' was not declared in this scope; did you mean 'ledcAttach'?
378 | ledcAttachPin(pin, ch);
| ^~~~~~~~~~~~~
| ledcAttach
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp: In member function 'void Pwm::wr_freq_res(int, uint32_t, uint8_t)':
/Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite/src/pwmWrite.cpp:451:5: error: 'ledcSetup' was not declared in this scope; did you mean 'ledc_stop'?
451 | ledcSetup(ch, frequency, resolution);
| ^~~~~~~~~
| ledc_stop
Multiple libraries were found for "Servo.h"
Used: /Users/davidcdelahaye/Documents/Arduino/libraries/ESP32_ESP32S2_AnalogWrite
Not used: /Applications/Arduino.app/Contents/Java/libraries/Servo
Not used: /Users/davidcdelahaye/Documents/Arduino/libraries/Servo
exit status 1
Error compiling for board ESP32C3 Dev Module.