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/