Saludos amables compañeros de foro:
Hoy les comparto que derivado de aceptar una actualizacion de las tarjetas ESP32 (3.0.1) dentro del ambiente Arduino (2.3.2); en la compilacion de un codigo que venia usando desde hace tiempo, ahora comenzo a arrojarme un error de compilacion, el error es el siguiente:
"
D:\Datos\Documents\Arduino\OPTO_HIVEGENIE_v1_13_febrero_2023\OPTO_HIVEGENIE_v1_13_febrero_2023.ino:105:3: error: 'ledcSetup' was not declared in this scope
105 | ledcSetup(0, 38000, 8);//Configuramos el canal 0 de PWM a 38000 khz con una resolusion de 8 bits que nos sirven para formar la barrera infrarroja
| ^~~~~~~~~
D:\Datos\Documents\Arduino\OPTO_HIVEGENIE_v1_13_febrero_2023\OPTO_HIVEGENIE_v1_13_febrero_2023.ino:106:3: error: 'ledcAttachPin' was not declared in this scope; did you mean 'ledcAttach'?
106 | ledcAttachPin(LEDPWM1, 0); //Asignamos AL pin LEDPWM1 del Microcontrolador el Canal 0 del PWM
| ^~~~~~~~~~~~~
| ledcAttach"
EL codigo que solia usar es el siguiente:
Despues de batallar un rato, pensando que algo andaba mal en mi Entorno, encontre en la pagina de EspressIf que habia cambios importantes en las APIS y por tanto aplicar la migracion del codigo que corresponda, asi que me di a latarea, sin emabargo, no he logrado lo que antes obtenia. ya me desespere y no entiendo cual es mi problema que mas adelante explanare; por esta razon recurro a ustedes para ver si me arrojan algo de luz.
El codigo que ahora tengo y que compila sin errores es el Siguiente:
Ahora explico lo que antes lograba y ahora no:
Tengo conectados dos Diodos LED Infrarrojos en los pines 16 y 17, respectivamente oscilando a 38khz con la finalidad de excitar y formar una barrera infrarroja para unos recpetores infrarojos VS1838B, lo cual funcionaba perfectamente.
Ahora, no logro que los dos Pines (16 y 17) se activen, es decir, tal cual esta el codigo "nuevo"; solo en el PIN 17 detecto la señal de 38khz, sin embargo, si hago un REM a las lineas que corresponden a ese PIN 17, entonces si que obtenlo los 38Kz en el PIN 16. No es un problema de hardware ya que como ya mensione, es una Tarjeta que vengo usando hace años y si paso a otro equipo alterno donde sigo con las versiones anteriores del Core de ESP32, todo funciona bien, con lo que solo se me ocurre que no entendi como migrar mi codigo o hay un BUG en la nueva version.
Nota.- Obviamente en el codigo que les comparto, solo dejo lo correspondiente "encender" la barrera infrarroja y no confundir con todo el proyecto.
Ojala que me puedan ayudar a discernir cual es mi problema, de antemano gracias
Hoy les comparto que derivado de aceptar una actualizacion de las tarjetas ESP32 (3.0.1) dentro del ambiente Arduino (2.3.2); en la compilacion de un codigo que venia usando desde hace tiempo, ahora comenzo a arrojarme un error de compilacion, el error es el siguiente:
"
D:\Datos\Documents\Arduino\OPTO_HIVEGENIE_v1_13_febrero_2023\OPTO_HIVEGENIE_v1_13_febrero_2023.ino:105:3: error: 'ledcSetup' was not declared in this scope
105 | ledcSetup(0, 38000, 8);//Configuramos el canal 0 de PWM a 38000 khz con una resolusion de 8 bits que nos sirven para formar la barrera infrarroja
| ^~~~~~~~~
D:\Datos\Documents\Arduino\OPTO_HIVEGENIE_v1_13_febrero_2023\OPTO_HIVEGENIE_v1_13_febrero_2023.ino:106:3: error: 'ledcAttachPin' was not declared in this scope; did you mean 'ledcAttach'?
106 | ledcAttachPin(LEDPWM1, 0); //Asignamos AL pin LEDPWM1 del Microcontrolador el Canal 0 del PWM
| ^~~~~~~~~~~~~
| ledcAttach"
EL codigo que solia usar es el siguiente:
C++:
#define LEDPWM1 17 // El PIN 17 Corresponde al LED IR para formar Barrera infrarroja
#define LEDPWM2 16 // El PIN 16 Corresponde al LED IR para formar Barrera infrarroja
void setup() {
//en las siguientes cuatro lineas configuramos y activamos la barrera infrarroja generada por los LEDs Infrarrojos
ledcSetup(0, 38000, 8);//Configuramos el canal 0 de PWM a 38000 khz con una resolusion de 8 bits que nos sirven para formar la barrera infrarroja
ledcAttachPin(LEDPWM1, 0); //Asignamos AL pin LEDPWM1 del Microcontrolador el Canal 0 del PWM
ledcAttachPin(LEDPWM2, 0); //Asignamos AL pin LEDPWM2 del Microcontrolador el Canal 0 del PWM
ledcWrite(0, 128);//Dejamos el DutyCicle al 50%
}
void loop() {
}
Despues de batallar un rato, pensando que algo andaba mal en mi Entorno, encontre en la pagina de EspressIf que habia cambios importantes en las APIS y por tanto aplicar la migracion del codigo que corresponda, asi que me di a latarea, sin emabargo, no he logrado lo que antes obtenia. ya me desespere y no entiendo cual es mi problema que mas adelante explanare; por esta razon recurro a ustedes para ver si me arrojan algo de luz.
El codigo que ahora tengo y que compila sin errores es el Siguiente:
C++:
uint8_t LEDPWM1= 17; // El PIN 17 Corresponde al LED IR para formar Barrera infrarroja
uint8_t LEDPWM2= 16; // El PIN 16 Corresponde al LED IR para formar Barrera infrarroja
void setup() {
pinMode(LEDPWM1, OUTPUT);
pinMode(LEDPWM2, OUTPUT);
ledcAttach(LEDPWM1, 38000, 8); //Configuramos el canal PWM a 38000 khz con una resolusion de 8 bits que nos sirven para formar la barrera infrarroja
ledcAttach(LEDPWM2, 38000, 8); //Configuramos el canal PWM a 38000 khz con una resolusion de 8 bits que nos sirven para formar la barrera infrarroja
ledcWrite(LEDPWM1, 128); //configuramos el Duty Cycle al 50%
ledcWrite(LEDPWM2,128);//configuramos el Duty Cycle al 50%
}
void loop() {
}
Ahora explico lo que antes lograba y ahora no:
Tengo conectados dos Diodos LED Infrarrojos en los pines 16 y 17, respectivamente oscilando a 38khz con la finalidad de excitar y formar una barrera infrarroja para unos recpetores infrarojos VS1838B, lo cual funcionaba perfectamente.
Ahora, no logro que los dos Pines (16 y 17) se activen, es decir, tal cual esta el codigo "nuevo"; solo en el PIN 17 detecto la señal de 38khz, sin embargo, si hago un REM a las lineas que corresponden a ese PIN 17, entonces si que obtenlo los 38Kz en el PIN 16. No es un problema de hardware ya que como ya mensione, es una Tarjeta que vengo usando hace años y si paso a otro equipo alterno donde sigo con las versiones anteriores del Core de ESP32, todo funciona bien, con lo que solo se me ocurre que no entendi como migrar mi codigo o hay un BUG en la nueva version.
Nota.- Obviamente en el codigo que les comparto, solo dejo lo correspondiente "encender" la barrera infrarroja y no confundir con todo el proyecto.
Ojala que me puedan ayudar a discernir cual es mi problema, de antemano gracias