analogReadResolution()

Description :

analogReadResolution() est une extension de l’API analogique pour les familles Zero, Due, MKR, Nano 33 (BLE et IoT) et Portenta.

Définit la taille (en bits) de la valeur renvoyée par analogRead() . La valeur par défaut est 10 bits (renvoie des valeurs comprises entre 0 et 1023) pour une compatibilité descendante avec les cartes basées sur AVR.

Les cartes Zero, Due, MKR et Nano 33 (BLE et IoT) ont des capacités ADC 12 bits auxquelles il est possible d’accéder en modifiant la résolution sur 12. Cela renverra des valeurs analogRead() comprises entre 0 et 4095.
Le Portenta H7 a un 16 bits. ADC, qui autorisera des valeurs comprises entre 0 et 65535.

Syntaxe :

analogReadResolution(bits)

Paramètres :

bits : détermine la résolution (en bits) de la valeur renvoyée par la fonction analogRead() . Vous pouvez le définir entre 1 et 32. Vous pouvez définir des résolutions supérieures aux 12 ou 16 bits pris en charge, mais les valeurs renvoyées par analogRead() subiront une approximation. Voir la note ci-dessous pour plus de détails.

Retour :

Rien

Exemple de code :

Le code montre comment utiliser ADC avec différentes résolutions.

void setup() {
  // ouvrir une connexion série
  Serial.begin(9600);
}

void loop() {
  // lit l'entrée sur A0 à la résolution par défaut (10 bits)
  // et est envoyez à  la connexion série
  analogReadResolution(10);
  Serial.print("ADC 10-bit (default) : ");
  Serial.print(analogRead(A0));

  // change la résolution à 12 bits et lit A0
  analogReadResolution(12);
  Serial.print(", 12-bit : ");
  Serial.print(analogRead(A0));

  // change la résolution à 16 bits et lit A0
  analogReadResolution(16);
  Serial.print(", 16-bit : ");
  Serial.print(analogRead(A0));

  // change la résolution à 8 bits et lit A0
  analogReadResolution(8);
  Serial.print(", 8-bit : ");
  Serial.println(analogRead(A0));

  // ajoute un peu de retard pour ne pas monopoliser Serial Monitor
  delay(100);
}

 

Remarques et avertissements :

Si vous définissez la valeur analogReadResolution()  sur une valeur supérieure aux capacités de votre carte, l’Arduino ne rapportera qu’à sa résolution la plus élevée, en remplissant les bits supplémentaires avec des zéros.

Par exemple : l’utilisation de Due avec analogReadResolution(16) vous donnera un nombre approximatif de 16 bits avec les 12 premiers bits contenant la lecture ADC réelle et les 4 derniers bits seront remplis de zéros .

Si vous définissez la valeur analogReadResolution() sur une valeur inférieure aux capacités de votre carte, les bits les moins significatifs supplémentaires lus à partir de l’ADC seront ignorés .

L’utilisation d’une résolution de 16 bits (ou de toute résolution supérieure aux capacités matérielles réelles) vous permet d’écrire des esquisses qui gèrent automatiquement les périphériques avec un ADC de résolution plus élevée lorsque ceux-ci deviennent disponibles sur les futures cartes sans changer une ligne de code.


 

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

 

Laisser un commentaire