Potentiomètres analogiques - Partie logicielle

Note

Cette section couvre le logiciel associé aux potentiomètres analogiques. Pour un guide sur le branchement électrique des potentiomètres analogiques, voir Potentiomètres analogiques.

Les potentiomètres sont des résistances variables qui permettent de convertir des informations sur la position en un signal de tension analogique. Ce signal peut être lu par le roboRIO pour contrôler tout appareil connecté au potentiomètre.

While it is possible to read information from a potentiometer directly with an Entrées analogiques - Partie logicielle, WPILib provides an AnalogPotentiometer class (Java, C++) that handles re-scaling the values into meaningful units for the user. It is strongly encouraged to use this class.

En fait, le nom AnalogPotentiometer est un nom qui suggère un usage restraint - cette classe peut être aussi utilisée pour la grande majorité des capteurs qui envoient leur signal sous la forme d’une tension analogique simple à échelle linéaire.

La classe AnalogPotentiometer

Note

Les paramètres « full range » ou « scale » dans le constructeur AnalogPotentiometer sont des facteurs d’échelle dans une plage comprenant les valeurs entre 0 à 1 , et non pas la valeur réelle (en voltage) de la lecture, comprise entre 0 à 5 volts. Autrement dit, ils représentent une échelle fractionnaire normalisée, plutôt qu’une échelle de tension.

AnalogPotentiometer peut être initialisé comme suit:

// Initializes an AnalogPotentiometer on analog port 0
// The full range of motion (in meaningful external units) is 0-180 (this could be degrees, for instance)
// The "starting point" of the motion, i.e. where the mechanism is located when the potentiometer reads 0v, is 30.
AnalogPotentiometer pot = new AnalogPotentiometer(0, 180, 30);
// Initializes an AnalogPotentiometer on analog port 0
// The full range of motion (in meaningful external units) is 0-180 (this could be degrees, for instance)
// The "starting point" of the motion, i.e. where the mechanism is located when the potentiometer reads 0v, is 30.
frc::AnalogPotentiometer pot{0, 180, 30};

Personnalisation de AnalogInput

Note

Si l’utilisateur modifie l’échelle de AnalogInput avec un suréchantillonnage, cela doit se refléter dans le paramètre d’échelle transmis au AnalogPotentiometer.

Si l’utilisateur souhaite appliquer des paramètres personnalisés au AnalogInput utilisé par le AnalogPotentiometer, un constructeur alternatif peut être utilisé dans lequel le AnalogInput est injecté:

// Initializes an AnalogInput on port 0, and enables 2-bit averaging
AnalogInput input = new AnalogInput(0);
input.setAverageBits(2);
// Initializes an AnalogPotentiometer with the given AnalogInput
// The full range of motion (in meaningful external units) is 0-180 (this could be degrees, for instance)
// The "starting point" of the motion, i.e. where the mechanism is located when the potentiometer reads 0v, is 30.
AnalogPotentiometer pot = new AnalogPotentiometer(input, 180, 30);
// Initializes an AnalogInput on port 0, and enables 2-bit averaging
frc::AnalogInput input{0};
input.SetAverageBits(2);
// Initializes an AnalogPotentiometer with the given AnalogInput
// The full range of motion (in meaningful external units) is 0-180 (this could be degrees, for instance)
// The "starting point" of the motion, i.e. where the mechanism is located when the potentiometer reads 0v, is 30.
frc::AnalogPotentiometer pot{input, 180, 30};

Lecture des valeurs à partir de AnalogPotentiometer

La valeur mise à l’échelle peut être lue en appelant simplement la méthode get:

pot.get();
pot.Get();

Utilisation de AnalogPotentiometers dans le code

Les capteurs analogiques peuvent être utilisés dans le code de la même façon qu’un autre type de capteur qui effectue la même fonction. Si le capteur analogique est un potentiomètre mesurant un angle de bras, il peut être utilisé de manière similaire à un encodeur. S’il s’agit d’un capteur à ultrasons, il peut être utilisé de manière similaire à d’autres ultrasonics.

Il est très important de garder à l’esprit que les potentiomètres ont des limites physiques réelles, et par conséquant, ont généralement une amplitude de mouvement limitée. Des précautions doivent être prises à la fois dans le mécanisme physique et dans le code pour garantir que le mécanisme n’abîme pas le capteur en dépassant sa portée maximale.