Définition et principe

 Les signaux numériques ont toujours une valeur LOW ou HIGH, donc les sorties numériques ne nous permettent pas, par exemple, de régler la luminosité de la LED, ou de faire varier la vitesse de  rotation d’un moteur. Pour pouvoir faire cela, il serait nécessaire de pouvoir disposer de sorties permettant des tensions intermédiaires entre LOW et HIGH : La PWM, pour Pulse Width Modulation, ou MLI en français pour Modulation de largeur d’impulsion.

Les micro-contrôleurs proposent donc des dispositifs permettant de disposer de PWM autonomes où le signal voulu est engendré indépendamment de l’exécution du programme. Toutes les broches ne sont pas utilisables. Le tableau ci-dessous résume la disponibilité des PWM sur les cartes Arduino.

En ce qui concerne la programmation, la fonction permettant de fixer le rapport cyclique de la PWM est la fonction analogWrite(...).

       Le premier argument de analogWrite(...) est la broche concernée.

       Le second argument est le rapport cyclique.  

 

  Le pourcentage de temps passé à l’état HIGH sur la période du signal est appelé le rapport cyclique. Il varie donc de 0%, le signal est tout le temps LOW, à 100%, le signal est tout le temps HIGH.

  Le rapport cyclique n’est pas donné de 0 à 100 mais de 0 à 255. Il faut donc faire une règle de 3 pour calculer la valeur à appliquer pour le rapport cyclique voulu. 

 

Exemple

La valeur à appliquer pour un rapport cyclique de 75% sera égal à 0,75 x 255 = 191.

analogWrite(3, 191);             // éclaire notre DEL à 75%