/*******************************************************************************
Ejercicio 2.
Realizar un perfil trapezoidal con una señal PWM.
- Durante t1 aumenta del 0 al 100%
- Durante t2 mantiene el 100%
- Durante t3 disminuye del 100% al 0%
********************************************************************************/
#define ledChannel 0 // Canal PWM, puede ser de 0 a 15
#define pinSalida 25 // Salida a la que se conecta el dispositivo
#define frequency 5000 // Frecuencia en Hz del PPWM
#define resolution 8 // con 8 bits: duty cycle entre 0-255
unsigned int t1 = 5000; // (ms)
unsigned int t2 = 5000; // (ms)
unsigned int t3 = 5000; // (ms)
unsigned int delta_t1;
unsigned int delta_t3;
void setup() {
Serial.begin(115200);
// Configuracion PWM
ledcSetup(ledChannel, frequency, resolution); // Configura el canal a la frecuencia y resolución indicados
ledcAttachPin(pinSalida, ledChannel); // Enlaza la salida digital con el canal configurado previamente
ledcWrite(ledChannel, 0); // Siendo dutyCycle un entero en el rango 0-255
// Intervalos de tiempo que se deben esperar en el bucle for
delta_t1 = (unsigned int) t1 / 256; // en ms
delta_t3 = (unsigned int) t3 / 256; // en ms
// Muestro para comprobar
Serial.println(delta_t1);
Serial.println(delta_t3);
}
void loop() {
// Comienzo rampa de subida
for (int j = 0; j < 256 ; j++) {
ledcWrite(ledChannel, j);
delay(delta_t1);
}
// Mantengo máxima potencia
delay(t2);
// Comienzo rampa de bajada
for (int j = 255; j >= 0 ; j--) {
ledcWrite(ledChannel, j);
delay(delta_t3);
}
}