pwm-fade.ino

Arduino UNO R3 · Archivo : pwm-fade.ino · Lenguaje : Arduino · Uso : Faire varier progressivement la luminosité d'une LED (respiration)

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 Uno R3 (ATmega328P, 5 V, 16 MHz) alimentado por USB o jack de 7-12 V. 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

En el Arduino IDE, elige la placa « Arduino Uno » y el puerto serie correspondiente y pulsa Subir. Abre el monitor serie a 9600 baudios para seguir los mensajes.

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).

← Volver a la ficha