pwm-fade.ino
El LED en un pin PWM (9) respira subiendo y bajando de brillo. analogWrite() genera una señal PWM de 8 bits (0-255) cuyo ciclo de trabajo controla el brillo medio del LED.
Hardware
Un Arduino Pro Mini (ATmega328P, existe en 5 V/16 MHz y 3,3 V/8 MHz) conectado a un convertidor USB-serie (FTDI) o un programador ICSP. 1 LED + resistencia de 330 Ω.
Cableado
Ánodo del LED al pin 9 mediante la resistencia de 330 Ω, cátodo a GND. El pin 9 es una salida PWM en las placas AVR clásicas.
Funcionamiento
analogWrite() configura un temporizador hardware que trunca la señal a unos 500 Hz. El valor 0-255 fija el ciclo de trabajo; el bucle lo varía en triángulo entre 0 y 255.
Ejecución
Elige « Arduino Pro Mini » en el IDE (5 V/16 MHz o 3,3 V/8 MHz según tu modelo), el procesador ATmega328P, el puerto correcto y Subir. El convertidor debe estar cableado DTR-DTR, RX-TX, TX-RX, VCC-VCC, GND-GND.
Variantes
Añade un potenciómetro en A0 para controlar el brillo con analogRead(), o aplica gamma (valor² / 255) para una subida más natural.
pwm-fade.ino
// Effet "respiration" : variation progressive de la LED par PWM.
const int LED = 9; // broche PWM (marquee ~ sur les cartes AVR)
int valeur = 0;
int pas = 4;
const int PAUSE = 15; // ms entre deux paliers
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop() {
analogWrite(LED, valeur); // PWM 8 bits : 0..255
Serial.println(valeur);
valeur += pas;
if (valeur >= 255) { valeur = 255; pas = -pas; } // sommet : on redescend
if (valeur <= 0) { valeur = 0; pas = -pas; } // bas : on remonte
delay(PAUSE);
}
// Sur les AVR, analogWrite() pilote les timers 0, 1 et 2 :
// broches 5, 6, 9, 10, 11, 3 selon la carte. La perception de la
// luminosite est logarithmique : pour un rendu plus naturel,
// remplacer valeur par (valeur * valeur) / 255 (gamma 2).