#include <TimerOne.h>
int brightness = 0; // Nivel de brillo del LED (de 0 a 255)
int fadeAmount = 25; // El valor en el que el brillo aumentará o disminuirá
const int ledPin = 9; // Pin PWM para el LED (puedes cambiarlo si usas otro pin PWM)
void setup() {
pinMode(ledPin, OUTPUT); // Configura el pin del LED como salida
Serial.begin(9600); // Inicializa la comunicación serie
// Configura el temporizador a 1ms (1000 microsegundos) para controlar el brillo suavemente
Timer1.initialize(1000);
Timer1.attachInterrupt(Systick_Handler); // Asigna la interrupción al temporizador
Serial.println("Iniciando control PWM del LED...");
}
void loop() {
// No se necesita código en el loop ya que el temporizador maneja la actualización del brillo
}
void Systick_Handler() {
// Aumenta gradualmente el brillo del LED
brightness += fadeAmount;
// Si el brillo alcanza el valor máximo o mínimo, invierte la dirección del cambio
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount; // Invierte la dirección para crear el efecto de parpadeo suave
}
analogWrite(ledPin, brightness); // Aplica el valor de PWM al LED para ajustar el brillo
// Imprime el porcentaje de brillo en el monitor serie
Serial.print("Brillo del LED: ");
Serial.print((brightness / 255.0) * 100);
Serial.println("%");
}