Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Objectif

Obtenir l'état d’une entrée digitale analogique du CRCduino

Quand l’utiliser

Dès que vous voulez mesurer un voltage.

Où l’utiliser

Typiquement dans la section void loop() de votre programme, pour mesurer continuellement sa valeur.

Info

Cliquer ici pour en apprendre plus sur les entrées analogues analogiques du CRCduino

Info

Les ports analoguesanalogiques, contrairement aux ports digitauxnumériques, ne peuvent pas être utilisés comme sorties. Il n’est donc pas nécessaire de les configurer comme sortieentrées, puisqu’ils le sont par défaut.

Note

C’est fonction requiert l’utilisation des fonctions suivantes dans votre programme:

Valeur de retour

Cette fonction retourne la valeur du port analogue analogique (ANA) correspondant dans une valeur de type unsigned int. Cette valeur sera entre 0 (0 V) et 1023 (7.5 V), proportionnellement à la tension présente sur le port (broche SIG).

Prototype principal

static unsigned int CrcLib::GetAnalogInput(unsigned char pin)

Les paramètres suivants sont requis par la fonction:

  • pin: Le nom de la broche à vérifier, de type unsigned char.

Overloads

Cette fonction n’a pas d’overloads, elle ne peut être utilisée qu’avec le prototype principal.

Exemples

Expand
title#1: Nous souhaitons afficher sur la console le voltage présent sur le port analogue analogique #2.
Code Block
languagecpp
#include <CrcLib.h>

void setup() {
    CrcLib::Initialize();

    // Ouvrir la console
    Serial.begin(2000000);

    /* 
    Reste du code d'initialisation
    ...
     */
}
void loop() {
    CrcLib::Update();

    // Lire la valeur sur le port analogueanalogique 2
    unsigned int valeur = CrcLib::GetAnalogInput(CRC_ANA_2);
    // L'afficher sur la console
    Serial.println(value);
    
    /* 
    Reste de la boucle principale
    ...
    */
}

En apprendre plus

Info
Pourquoi est-ce que la fonction ne retourne des valeurs qu’entre 0 et 1023, alors qu’un unsigned int peut théoriquement avoir des valeurs entre 0 et 65 535 ?

Les lectures analogues sur des micro-contrôleurs sont effectuées par des convertisseurs analogique-numérique (ADC). Celui du CRCduino a une résolution de 10 bits, ce qui veut dire qu’il ne peut mesurer que 1024 divisions de son voltage de référence (maximum). La fonction est donc limitée à 1024 valeur, soit de 0 à 1023.

L’ADC par défaut du Arduino Mega est de 5V, mais un diviseur de tension incorporé au circuit du CRCduino divise la tension lue par 1.5, augmentant ainsi la valeur maximum à 7.5 V.

Info
Quel est la plus petite variation de tension qui peut être lue par GetAnalogInput() ?

L’entrée analogue analogique divise la plage d’entrée de 0 à 7.5 V en 1024 pas. Par conséquent, chaque pas englobe 7.5 V / 1024 = 0.007 V. La résolution de la lecture est de 7 mV, alors une variation de moins de 7 mV ne peut pas être nécessairement détectée. 7 mV, c’est très petit, et amplement suffisant en considérant la précision des composantes et capteurs des robots amateurs.

Info
Rien n’est connecté à la broche que nous lisons, mais la valeur retournée n’est pas 0.

C’est normal : cette valeur fluctue en fonction d’une multitude de facteurs qui, à première vue, ne devraient pas avoir d’impact, comme la proximité d’une main ou la tension de circuits à proximité. Une valeur de 0 est presque uniquement possible à obtenir si la broche SIG est directement connectée à la broche GND.

Articles reliés

Filter by label (Content by label)
sorttitle
excerptTyperich content
cqllabel = "ar-analog_io"