#include <Arduino.h> // por defecto la incluye cundo la enlace con el programa principal
// Led a controlar por PWM LED
#define LED_PIN01 12
#define LED_PIN02 13
#define LED_PIN03 14
#define LED_PIN04 15
const int espera = 50; // esperar 0,05 segundos
int ledPWMFrequency = 5000; // microsegundos
int ledPWMChanel = 0; // canal generador de pulsos
int ledPWMResolution = 8; // resolucion de la potencia modulada 256 partes a 100%
int ledPWMDutyCycle = 0; // longitud de pulso de potencia 0%
void configLED ( uint8_t ledPin, uint32_t freq, uint8_t canal, uint32_t resolucion, uint8_t dcycle);
void setup() {
// habilita el puerto serire de comunicaciones serial usb
Serial.begin (115200);
delay(5000); // tiempo para abrir el monitor
Serial.println ( " ESP32 PWM OUT test V00 R00" );
configLED(LED_PIN01, ledPWMFrequency, 0, ledPWMResolution, ledPWMDutyCycle);
configLED(LED_PIN02, ledPWMFrequency, 1, ledPWMResolution, ledPWMDutyCycle);
configLED(LED_PIN03, ledPWMFrequency, 2, ledPWMResolution, ledPWMDutyCycle);
configLED(LED_PIN04, ledPWMFrequency, 3, ledPWMResolution, ledPWMDutyCycle);
}
void loop() {
int i ;
// put your main code here, to run repeatedly:
for ( i = 0; i < 250; i++){
Serial.printf ( "\n valor i -> %i \t duty -> %i ", i, ledPWMDutyCycle);
ledPWMDutyCycle = map ( i, 0, 255, 0, 255);
ledcWrite(ledPWMChanel, ledPWMDutyCycle);
ledcWrite(0, ledPWMDutyCycle);
ledcWrite(1, ledPWMDutyCycle);
ledcWrite(2, ledPWMDutyCycle);
ledcWrite(3, ledPWMDutyCycle);
delay(espera);
}
}
/**************************************************************
* FUNCIONES DE CONFIGURACION PWM
**************************************************************/
void configLED ( uint8_t ledPin, uint32_t freq, uint8_t canal, uint32_t resolucion, uint8_t dcycle){
// ajuste del canal y frecuencia del PWM
ledcSetup (canal, freq, resolucion);
ledcAttachPin(ledPin, canal);
ledcWrite(canal, dcycle);
};