Cas d'une diode électroluminescente (led)
Les pins utilisables pour des sorties pseudo-analogique PWM
Afin de commander le rapport cyclique d'un sortie pseudo-analogique PWM pour moduler par exemple l'intensité lumineuse d'une led, cette dernière doit être branchée sur un des pins repérés par le symbole \(\sim \)(pins 3, 5, 6, 9, 10 et 11) qui peuvent être configurés comme sortie pseudo-analogique PWM (voir image ci-contre).
La tension PWM (de forme rectangulaire et de fréquence élevée) est créée sur ce pin, via une commande codée sur 8 bits, c'est à dire sur une plage allant de 0 à 255 (28-1 = 255). Le rapport cyclique vaut commande/255, c'est-à-dire si commande=255 alors +5V est commandé en continu sur le pin.
Exemple du câblage d'une led branchée sur le pin sortie pseudo-analogique PWM 10
Dans le montage ci-dessous d'une diode électroluminescente (led), comme la fréquence de la tension commandée sur le pin sortie pseudo-analogique PWM 10, de forme rectangulaire, est élevée, et que la led est instantanément rapide (temps de réponse de l'ordre de la nanoseconde), cette dernière clignote à cette fréquence élevée. Mais les yeux de l'utilisateur jouent le rôle de filtre, en ne retenant que la valeur moyenne de l'intensité lumineuse perçue...
NB1 : les leds sont polarisées : le pôle "-" est relié à la cathode (broche la plus courte) et le pôle "+" à l'anode (broche la plus longue).
NB2 : la résistance R1 dans ce montage (qui est bleue claire / verte dans les boites à disposition) a pour fonction de limiter le courant passant dans la led.
NB3 : les composants alimentés directement par les pins sorties, doivent être de faible puissance (comme des leds) car la sortie générée ne fournit pas plus de 40mA sous 5V, c'est-à-dire 0,2W. Pour commander des systèmes plus puissants, il faudra utiliser des préactionneurs (relais, hacheur...) et une autre énergie source (voir partie "Commander le rapport cyclique d'une sortie pseudo-analogique PWM : hacheur et moteur à courant continu").
Structure du code
• dans l'entête déclarative : déclarer les variables associées au numéro du pin où est branchée une sortie pseudo-analogique PWM telle qu'une led (Ledpin) ainsi qu'à la valeur commandée (Ledvaleur) sur ce pin sortie pseudo-analogique PWM ;
Attention à la casse des noms de variable : « Ledpin » est différent de « ledpin » !
• dans la fonction void setup() : définir le pin utilisé, comme une sortie, à l'aide de la fonction « pinMode »
• dans la fonction void loop() : commander (ou écrire) la valeur du rapport cyclique de la sortie pseudo-analogique PWM (image de l'intensité lumineuse de la led) à l'aide de la fonction « analoglWrite ».
La commande doit être un entier compris entre 0 et 255 : si commande=255 alors +5V est commandé en continu sur le pin.
Code pour commander l'intensité lumineuse d'une led
int Ledpin = 10 ; // déclare la variable Ledpin comme un entier de valeur 10 (repère du pin utilisé par la led)
int Ledvaleur ; // déclare la variable Ledvaleur comme un entier (valeur qui sera commandée sur le pin de la led)
void setup() {
pinMode(Ledpin,OUTPUT); // définit le pin Ledpin (ici 10) comme une sortie
}
void loop() {
Ledvaleur = round(Potvaleur*255./1023); // exemple d'une expression de Ledvaleur si la led doit s'allumer selon la position d'un potentiomètre. Cette expression change l'échelle de la variable Potvaleur allant de 0 à 1023 en 0 à 225. C'est un calcul en croix, afin que la variable Ledvaleur aille de 0 à 255 compatible avec les sorties PWM. La fonction round renvoie l'entier le plus proche.
analogWrite(Ledpin, Ledvaleur); // commande (ou écrit) le rapport cyclique de la sortie pseudo-analogique PWM Ledpin. Ce rapport cyclique vaut Ledvaleur/255, c'est-à-dire si Ledvaleur=255 alors +5V est commandé en continu sur le pin.
}