Référence du Langage Arduino : Mini | Standard | Etendue | Librairies | Comparaison
Génère une impulsion de largeur / période voulue sur une broche de la carte Arduino (onde PWM - Pulse Width Modulation en anglais ou MLI - Modulation de Largeur d'Impulsion en français). Ceci peut-être utilisé pour faire briller une LED avec une luminosité variable ou contrôler un moteur à des vitesses variables.
Après avoir appelé l'instruction analogWrite(), la broche générera une onde carrée stable avec un "duty cycle" (fraction de la période où la broche est au niveau haut) de longueur spécifiée, jusqu'à l'appel suivant de l'instruction analogWrite() (ou bien encore l'appel d'une instruction digitalRead() ou digitalWrite() sur la même broche). La fréquence de l'onde PWM est approximativement de 490 Hz (soit 490 périodes par seconde).
Sur les nouvelles cartes Arduino (incluant la Mini et la BT) avec le microcontrôleur ATmega168, cette fonction fonctionne sur les broches 3,5, 6, 9, 10 et 11. Les cartes plus anciennes USB et série basée sur l'ATmega8 ne supporte l'instruction analogWrite() que sur les broches 9, 10 et 11.
analogWrite(broche, valeur);
Aucune.
Il n'est pas nécessaire de faire appel à l'instruction pinMode() pour mettre la broche en sortie avant d'appeler la fonction analogWrite().
L'impulsion PWM générée sur les broches 5 et 6 pourront avoir des "duty cycle" plus long que prévu. La raison en est l'interaction avec les instructions millis() et delay(), qui partagent le même timer interne que celui utilisé pour générer l'impulsion de sortie PWM.
Fixer la luminosité d'une LED proportionnellement à la valeur de la tension lue depuis un potentiomètre.
int ledPin = 9; // LED connectée sur la broche 9
int analogPin = 3; // le potentiomètre connecté sur la broche analogique 3
int val = 0; // variable pour stocker la valeur de la tension lue
void setup()
{
pinMode(ledPin, OUTPUT); // configure la broche en sortie
}
void loop()
{
val = analogRead(analogPin); // lit la tension présente sur la broche en entrée
analogWrite(ledPin, val / 4); // Résultat d'analogRead entre 0 to 1023,
// résultat d'analogWrite entre 0 to 255
// => division par 4 pour adaptation
}
L'instruction analogWrite n'écrit pas à proprement parler une valeur analogique en tension mise sur une broche, mais permet de générer des phénomènes de variation "d'allure analogique" en jouant sur la largeur de l'impulsion générée. Pour générer une véritable tension analogique à partir d'une commande numérique, il faut utiliser un circuit intégré externe de conversion numérique analogique (DAC en anglais pour Digital to Analogic converter) qui sera commandé par plusieurs broches numériques.
Page d'accueil de la référence Arduino en français
Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino.
Le texte original de la référence Arduino est sous licence Creative Commons Attribution-ShareAlike 3.0 . Les exemples de code dans la référence sont dans le domaine public.
La présente traduction française commentée a été réalisée par Xavier HINAULT (2010) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.