analogWriteResolution()

Description :

analogWriteResolution() est une extension de l’API analogique pour l’Arduino Due.

analogWriteResolution()définit la résolution de la fonction analogWrite() . Il utilise par défaut 8 bits (valeurs comprises entre 0 et 255) pour une compatibilité descendante avec les cartes basées sur AVR.

Le Due a les capacités matérielles suivantes :

  • 12 broches par défaut en PWM 8 bits, comme les cartes basées sur AVR. Ceux-ci peuvent être modifiés en résolution 12 bits.
  • 2 broches avec DAC 12 bits (convertisseur numérique-analogique)

En définissant la résolution d’écriture sur 12, vous pouvez utiliser analogWrite() avec des valeurs comprises entre 0 et 4095 pour exploiter la résolution complète du DAC ou pour définir le signal PWM sans basculement.

Le Zero a les capacités matérielles suivantes :

  • 10 broches par défaut en PWM 8 bits, comme les cartes basées sur AVR. Ceux-ci peuvent être modifiés en résolution 12 bits.
  • 1 broche avec DAC 10 bits (convertisseur numérique-analogique).

En définissant la résolution d’écriture sur 10, vous pouvez utiliser analogWrite() avec des valeurs comprises entre 0 et 1023 pour exploiter la pleine résolution du DAC

La famille de cartes MKR possède les capacités matérielles suivantes :

  • 4 broches par défaut en PWM 8 bits, comme les cartes basées sur AVR. Celles-ci peuvent être modifiées de 8 (par défaut) à une résolution de 12 bits.
  • 1 broche avec DAC 10 bits (convertisseur numérique-analogique)

En définissant la résolution d’écriture sur 12 bits, vous pouvez utiliser analogWrite() avec des valeurs comprises entre 0 et 4095 pour les signaux PWM ; définissez 10 bits sur la broche DAC pour exploiter la pleine résolution DAC de 1024 valeurs.

Syntaxe :

analogWriteResolution(bits)

Paramètres :

bits : détermine la résolution (en bits) des valeurs utilisées dans la analogWrite() fonction. La valeur peut aller de 1 à 32. Si vous choisissez une résolution supérieure ou inférieure aux capacités matérielles de votre carte, la valeur utilisée dans analogWrite() sera soit tronquée si elle est trop élevée, soit complétée par des zéros si elle est trop faible. Voir la note ci-dessous pour plus de détails.

Retour :

Rien

Exemple de code :

void setup() {
  // ouvrir une connexion série
  Serial.begin(9600);
  // faire de nos broches numérique des sorties
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  // lire l'entrée sur A0 et la mapper sur une broche PWM
  // avec une LED attachée
  int sensorVal = analogRead(A0);
  Serial.print("Analog Read) : ");
  Serial.print(sensorVal);

  // la résolution PWM par défaut
  analogWriteResolution(8);
  analogWrite(11, map(sensorVal, 0, 1023, 0, 255));
  Serial.print(" , 8-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 255));

  // change la résolution PWM à 12 bits
  // la résolution complète de 12 bits n'est prise en charge que
  // sur le Due
  analogWriteResolution(12);
  analogWrite(12, map(sensorVal, 0, 1023, 0, 4095));
  Serial.print(" , 12-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 4095));

  // change la résolution PWM à 4 bits
  analogWriteResolution(4);
  analogWrite(13, map(sensorVal, 0, 1023, 0, 15));
  Serial.print(", 4-bit PWM value : ");
  Serial.println(map(sensorVal, 0, 1023, 0, 15));

  delay(5);
}

 

Remarques et avertissements :

Si vous définissez la valeur analogWriteResolution() sur une valeur supérieure aux capacités de votre carte, l’Arduino rejettera les bits supplémentaires.

Par exemple : en utilisant le Due avec analogWriteResolution(16) sur une broche DAC 12 bits, seuls les 12 premiers bits des valeurs passées à analogWrite() seront utilisés et les 4 derniers bits seront ignorés.

Si vous définissez la valeur analogWriteResolution() sur une valeur inférieure aux capacités de votre carte, les bits manquants seront complétés par des zéros pour remplir la taille matérielle requise. Par exemple : en utilisant Due avec analogWriteResolution(8) sur une broche DAC 12 bits, l’Arduino ajoutera 4 bits zéro à la valeur 8 bits utilisée analogWrite() pour obtenir les 12 bits requis.


 

Source : https://www.arduino.cc/reference/en/language/functions/zero-due-mkr-family/analogwriteresolution/

 

Laisser un commentaire