|

analogRead()


Description :

Lit la valeur d’une broche d’entrée analogique spécifiée.

Un Arduino UNO, par exemple, contient un convertisseur analogique-numérique (CAN) multicanal 10 bits. Cela signifie qu’il convertit les tensions d’entrée comprises entre 0 et la tension de fonctionnement (+5 VCC) en valeurs entières comprises entre 0 et 1023. Cela donne une résolution entre les mesures de : 5 volts / 1024 unités, soit 0,0049 volt (4,9 mV) par unité.

La plage de tension d’entrée peut être modifiée à l’aide de analogReference(). La résolution par défaut analogRead() sur les cartes Arduino est de 10 bits, pour des raisons de compatibilité. Vous devez utiliser analogReadResolution() pour passer à une résolution supérieure.

Syntaxe :

Utilisez la fonction suivante pour obtenir un exemple de lecture d’une entrée analogique :

analogRead(pin)

Paramètres :

La fonction admet le paramètre suivant :

  • pin : le nom de la broche d’entrée analogique à partir de laquelle lire.

Retours

La fonction renvoie la valeur analogique de la broche. Elle est toutefois limitée à la résolution du convertisseur analogique-numérique (0-1023 pour 10 bits, 0-4095 pour 12 bits, etc.). Type de données : int.

Exemple de code :

Le code lit la valeur analogique sur analogPin et l’affiche.

int analogPin = A3; // curseur du potentiomètre (borne centrale) connecté à la broche analogique 3
                    // les fils extérieurs sont reliés à la terre et au VCC
int val = 0;  // variable pour stocker la valeur lue

void setup() {
  Serial.begin(9600);           //  configuration série
}

void loop() {
  val = analogRead(analogPin);  // lire la broche d'entrée
  Serial.println(val);          // valeur de débogage
  delay(200);
}

Vous pouvez convertir la lecture analogique brute en une valeur de tension en utilisant la méthode suivante :

// Constants
const float V_REF = 5.0;     // Tension de référence analogique (e.g., 5V or 3.3V)
const float R_BITS = 10.0;   // ADC resolution (bits)
const float ADC_STEPS = (1 << int(R_BITS)) - 1; // Nombre d'étapes (2^R_BITS - 1)

const int potentiometerPin = A3; // Potentiomètre connecté à la broche analogique A3

void setup() {
  Serial.begin(9600); // Initialiser la communication série
  Serial.println(ADC_STEPS);
}

void loop() {
  int rawValue = analogRead(potentiometerPin); // Lire l'entrée analogique
  float voltage = (rawValue / ADC_STEPS) * V_REF; // Convertir en tension

  Serial.print("Voltage: ");
  Serial.print(voltage, 3); // Imprimer la tension avec 3 décimales
  Serial.println(" V");
  
  delay(200); // Petit délai pour éviter de submerger le moniteur série
}

Remarques et avertissements :

Si la broche d’entrée analogique n’est connectée à rien, la valeur renvoyée par analogRead() fluctuera en fonction d’un certain nombre de facteurs (par exemple, les valeurs des autres entrées analogiques, la proximité de votre main par rapport à la carte, etc.).


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

Publications similaires

Laisser un commentaire

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