Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

« Previous Version 3 Current »

Objectif

Obtenir l'état d’une entrée digitale 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.

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

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

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

Valeur de retour

Cette fonction retourne la valeur du port analogue (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

 #1: Nous souhaitons afficher sur la console le voltage présent sur le port analogue #2.
#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 analogue 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

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.

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

L’entrée analogue 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.

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

  • No labels