FanController icon indicating copy to clipboard operation
FanController copied to clipboard

Error on esp 32 wroom 32D function overloading and how i fixed it

Open royamay opened this issue 1 year ago • 0 comments

c:\Users\Administrator\Documents\Arduino\libraries\FanController\FanController.cpp: In member function 'void FanController::begin()': c:\Users\Administrator\Documents\Arduino\libraries\FanController\FanController.cpp:31:28: error: call of overloaded 'analogWriteFrequency(int)' is ambiguous analogWriteFrequency(25000); ^ In file included from C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\cores\esp32/Arduino.h:36, from c:\Users\Administrator\Documents\Arduino\libraries\FanController\FanController.cpp:1: C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\cores\esp32/esp32-hal.h:100:6: note: candidate: 'void analogWriteFrequency(uint32_t)' void analogWriteFrequency(uint32_t freq); ^~~~~~~~~~~~~~~~~~~~ In file included from c:\Users\Administrator\Documents\Arduino\libraries\FanController\FanController.cpp:5: c:\Users\Administrator\Documents\Arduino\libraries\ESP32_AnalogWrite/analogWrite.h:15:6: note: candidate: 'void analogWriteFrequency(double)' void analogWriteFrequency(double frequency); ^~~~~~~~~~~~~~~~~~~~ c:\Users\Administrator\Documents\Arduino\libraries\FanController\FanController.cpp: In member function 'void FanController::setDutyCycle(byte)': c:\Users\Administrator\Documents\Arduino\libraries\FanController\FanController.cpp:55:43: error: call of overloaded 'analogWrite(byte&, double)' is ambiguous analogWrite(_pwmPin, 2.55 * _pwmDutyCycle); ^ In file included from C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\cores\esp32/Arduino.h:36, from c:\Users\Administrator\Documents\Arduino\libraries\FanController\FanController.cpp:1: C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\cores\esp32/esp32-hal.h:98:6: note: candidate: 'void analogWrite(uint8_t, int)' void analogWrite(uint8_t pin, int value); ^~~~~~~~~~~ In file included from c:\Users\Administrator\Documents\Arduino\libraries\FanController\FanController.cpp:5: c:\Users\Administrator\Documents\Arduino\libraries\ESP32_AnalogWrite/analogWrite.h:21:6: note: candidate: 'void analogWrite(uint8_t, uint32_t, uint32_t)' void analogWrite(uint8_t pin, uint32_t value, uint32_t valueMax = 255); ^~~~~~~~~~~

Using library FanController at version 1.0.6 in folder: C:\Users\Administrator\Documents\Arduino\libraries\FanController Using library ESP32 AnalogWrite at version 0.1 in folder: C:\Users\Administrator\Documents\Arduino\libraries\ESP32_AnalogWrite exit status 1

Compilation error: exit status The analogWriteFrequency function is defined both in esp32-hal.h (as part of the ESP32 core library) and in analogWrite.h (from the ESP32_AnalogWrite library), causing ambiguity. To resolve this, you may need to modify the FanController library code to specify which analogWriteFrequency it should use. analogWrite(_pwmPin, 2.55 * _pwmDutyCycle); is Ambiguous:

Similar to the previous point, analogWrite is defined in both libraries. The ESP32 core library expects an integer value, while the ESP32_AnalogWrite library has a version that takes a uint32_t with an optional maximum value parameter. This also needs to be resolved by specifying which version to use or by adjusting the parameters to match one of the expected function signatures.

in FanController.cpp Remove the include for analogwrite.h and Modify function calls: analogWriteFrequency(25000) and analogWrite(_pwmPin, 2.55 * _pwmDutyCycle);

to what the esp32 core version expects analogWriteFrequency((uint32_t)25000); and analogWrite(_pwmPin, (int)(2.55 * _pwmDutyCycle));

royamay avatar Dec 10 '23 05:12 royamay