🛠 Variateur lumineux en PWM (broches 3, 5, 6, 9, 10)
Objectifs
Faire varier la luminosité d'une LED avec analogWrite (PWM) et comprendre LA particularité du Nano Every : le PWM n'est disponible que sur les broches 3, 5, 6, 9 et 10. La broche 11, PWM sur un Uno/Nano classique, n'y est qu'une E/S numérique — piège classique des shields recyclés.
Matériel
- 1 × Arduino Nano Every
- 1 × LED + 1 × résistance 220 Ω
- 1 × potentiomètre 10 kΩ (sur A0)
- Fils de connexion, câble micro-USB
Code complet
// Potentiometre A0 -> variation PWM sur broche 9
// Rappel: PWM possible uniquement sur 3, 5, 6, 9, 10 (pas 11 !)
const uint8_t LED_PWM = 9;
const uint8_t POT = A0;
uint32_t tPrecedente = 0;
void setup {
pinMode(LED_PWM, OUTPUT);
Serial.begin(9600);
}
void loop {
if (millis - tPrecedente < 20) return;
tPrecedente = millis;
uint16_t brut = analogRead(POT); // 0..1023
uint8_t rapport = map(brut, 0, 1023, 0, 255);
analogWrite(LED_PWM, rapport); // 0..255
Serial.print("rapport="); Serial.println(rapport);
}
Vérification attendue
La LED s'éteint progressivement puis monte en luminosité en tournant le potentiomètre. Avec un oscilloscope ou un logiqueur sur la broche 9, on voit un signal carré dont le rapport cyclique suit la consigne. Testez le même code sur la broche 11 : la LED reste simplement allumée ou éteinte — la preuve que le PWM y est absent.
Erreurs fréquentes
analogWritesur 11 (ou 4, 7, 8…) : aucun effet PWM, la broche reste en tout-ou-rien ; vérifiezdigitalPinHasPWM(pin)dans le code.- Oublier la résistance en série avec la LED : à 5 mA par LED c'est tentant, mais on sollicite inutilement la puce.
- Attendre la fréquence du Nano classique : le cœur megaAVR rempile les timers (TCA/TCD configurables), les fréquences PWM ne sont pas identiques à l'ancien cœur — sensible pour le contrôle moteur ou la lecture audio.
- Confusion de valeur :
analogWriteprend 0-255,analogReadrenvoie 0-1023 — d'où lemap. - LED « clignotante » à faible rapport : c'est le scintillement perceptible du PWM à basse fréquence ; normal en pédagogique.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
multi-serie.inoArduinoadc-filtre.inoArduinointerrupt-bouton.inoArduinonvm-consignes.inoArduinosommeil-every.inoArduinowatchdog-secours.inoArduino