🛠 Variateur d'intensité LED avec PWM

Arduino Nano (Classic, ATmega328P) · intermediaire · Schéma : IMG-nano-classic-intermediaire-4-nanoc-pwm-led.svg — LED avec résistance sur broche PWM 9 de l'Arduino Nano, potentiomètre sur A0 pilotant analogWrite

Objectifs

Utiliser la modulation de largeur d'impulsion (PWM) pour faire varier la luminosité d'une LED : le core Arduino expose analogWrite(pin, 0-255) sur les broches PWM (6 broches sur l'en-tête numérique du Nano). Le potentiomètre de l'A0 (0-1023) est mis à l'échelle 0-255 pour piloter le rapport cyclique à ~490 Hz.

Matériel

Code complet

// Variateur PWM : potentiomètre A0 -> LED broche 9
const uint8_t POT = A0;
const uint8_t LED_PWM = 9;      // broche PWM (marque ~ sur le silk)
uint32_t derniere = 0;

void setup {
  pinMode(LED_PWM, OUTPUT);
  Serial.begin(9600);
}

void loop {
  if (millis - derniere >= 20) {
    derniere = millis;
    int brut = analogRead(POT);              // 0..1023
    uint8_t rapport = map(brut, 0, 1023, 0, 255);
    analogWrite(LED_PWM, rapport);           // 0..255
    Serial.println(rapport);
  }
}

Vérification attendue

En tournant le potentiomètre, la LED s'éteint progressivement (0) puis monte en luminosité jusqu'à plein régime (255) sans palier. En regardant la LED via la caméra d'un téléphone au ralenti, on distingue le scintillement PWM (~490 Hz sur les broches 9/10 du 328P) alors que l'œil perçoit une lumière continue.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels