#include <Arduino.h>
#define PWM_PIN 23 // Pin de salida PWM (puedes ajustar según tu configuración)
#define PWM_MAX 255 // Máximo valor del duty cycle (8 bits en ESP32)
#define PWM_FREQ 1000 // Frecuencia del PWM en Hz
#define PWM_CHANNEL 0 // Canal PWM (puedes usar 0-15 en ESP32)
#define PWM_RES 8 // Resolución del PWM en bits (8 bits)
const int t1 = 2000; // Tiempo de aceleración (ms)
const int t2 = 3000; // Tiempo en máxima potencia (ms)
const int t3 = 2000; // Tiempo de desaceleración (ms)
void setup() {
Serial.begin(115200);
// Configuración del canal PWM
ledcAttach(PWM_PIN, PWM_FREQ, PWM_RES);
}
void loop() {
// Aceleración progresiva
for (int duty = 0; duty <= PWM_MAX; duty++) {
ledcWrite(PWM_CHANNEL, duty); // Ajusta el duty cycle
delay(t1 / PWM_MAX); // Divide t1 entre el rango de PWM
Serial.println("Acelerando: " + String(duty));
}
// Mantener máxima potencia
ledcWrite(PWM_CHANNEL, PWM_MAX); // Señal PWM al máximo
Serial.println("Manteniendo máxima potencia...");
delay(t2); // Tiempo en máxima potencia
// Desaceleración progresiva
for (int duty = PWM_MAX; duty >= 0; duty--) {
ledcWrite(PWM_CHANNEL, duty); // Ajusta el duty cycle
delay(t3 / PWM_MAX); // Divide t3 entre el rango de PWM
Serial.println("Desacelerando: " + String(duty));
}
}