|

analogWrite()


Description :

Écrit une valeur analogique (onde PWM) sur une broche. Peut être utilisé pour allumer une LED à une luminosité variable ou piloter un moteur à différentes vitesses. Après un appel à analogWrite(), la broche génère une onde rectangulaire constante du rapport cyclique spécifié jusqu’au prochain appel à analogWrite() (ou à digitalRead() ou digitalWrite()) sur la même broche.

Vérifiez le brochage de votre carte pour connaître les broches PWM officiellement prises en charge. Bien que certaines cartes disposent de broches supplémentaires compatibles PWM, leur utilisation est réservée aux utilisateurs expérimentés, capables de prendre en compte la disponibilité des temporisateurs et les conflits potentiels avec d’autres utilisations de ces broches.

Outre les capacités PWM, certaines cartes disposent d’une véritable sortie analogique lorsqu’elles utilisent analogWrite() sur les broches marquées DAC. Vérifiez le brochage de votre carte pour savoir si le DAC est disponible.

Only 4 different pins can be used at the same time. Enabling PWM on more than 4 pins will abort the running sketch and require resetting the board to upload a new sketch again.

Il n’est pas nécessaire d’appeler pinMode() pour définir la broche comme sortie avant d’appeler analogWrite(). La fonction analogWrite n’a aucun lien avec les broches analogiques ni avec la fonction analogRead.

Syntaxe :

Utilisez la fonction suivante pour générer un signal PWM sur une broche donnée :

analogWrite(pin, value)

Paramètres :

La fonction admet les paramètres suivants :

  • pin : broche Arduino pour la sortie du signal PWM. Types de données autorisés : int.
  • value : rapport cyclique : compris entre 0 (toujours désactivé) et 255 (toujours activé). Types de données autorisés : int.

Retours

La fonction ne renvoie rien.

Exemple de code :

Définit le cycle de service PWM qui contrôle la LED proportionnellement à la valeur lue à partir du potentiomètre (connecté à A3).

int ledPin = 9;      // LED connectée à la broche numérique 9
int analogPin = A3;   // potentiomètre connecté à la broche analogique 3 (A3)
int val = 0;         // variable pour stocker la valeur lue

void setup() {
  pinMode(ledPin, OUTPUT);  // définit la broche comme sortie
}

void loop() {
  val = analogRead(analogPin);  // lire la broche d'entrée
  analogWrite(ledPin, val / 4); // Les valeurs analogRead vont de 0 à 1023, les valeurs analogWrite de 0 à 255
}

Remarques et avertissements :

Les sorties PWM générées sur les broches 5 et 6 peuvent avoir des rapports cycliques plus élevés que prévu. Ceci est dû aux interactions avec les fonctions millis() et delay(), qui partagent le même temporisateur interne utilisé pour générer ces sorties PWM. Ce phénomène se manifeste principalement avec des rapports cycliques faibles (par exemple, 0 à 10) et peut entraîner une désactivation partielle de la sortie sur les broches 5 et 6 par une valeur de 0.


Source : https://docs.arduino.cc/language-reference/en/functions/analog-io/analogWrite/

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *