1. Introduction
Après avoir vu ensemble les entrées et les sorties numériques, c’est à dire en tout ou rien, (soit on envoie une donnée, soit on envoie rien), nous allons voir ensemble comment gérer des composants en envoyant un peu, moyennement ou beaucoup de tension si par exemple on souhaite alimenter un moteur avec une vitesse précise.
Les entrées / sorties analogiques communiquent elles aussi avec les composants qui sont reliés à l’aide de la tension de l’Arduino.
Ces entrées et sorties varient entre 0V et 5V.
En reprenant notre exemple d’introduction avec le moteur, on peut alimenter un moteur avec une tension de 0.5V. Cela permet d’avoir une maîtrise totale de la vitesse.
2. Déclarer une entrée
Comme pour le tutoriel sur les Entrées / Sorties numériques, nous avons besoin de déclarer les entrées. Cela se fait de la même manière que pour les entrées numériques. Cependant, le numéro des « pins » ne sont pas les mêmes. Les « pins » compatibles avec les données analogiques sont « A0, A1, A2, A3, A4, A5 ».
int nom_entree = numero_pin;
Ensuite, dans la fonction d’initialisation de l’Arduino « void setup() », on déclare que la variable crée précedement est une entrée :
pinMode(nom_entree, INPUT);
Rappel : Ne pas oublier le « ; » à la fin de chaque ligne de code.
3. Déclarer une sortie
Pour déclarer une sortie, on procède de la même manière.
Les « pins » de sorties sont les « pins » avec les symboles « ~ », c’est-à-dire, les numéros « 3, 5, 6, 9, 10, 11 ». Ces « pins » sont des sorties « PWM » (Power Wave Modulation).
Il suffit de remplacer « INPUT » pas « OUTPUT ».
int mon_entree = A0;
int ma_sortie = 3;
void setup() {
pinMode(mon_entree, INPUT);
pinMode(ma_sortie, OUTPUT);
}
void loop() {
}
4. Utilisation d’une entrée
Pour commander une entrée analogique, on envoie une donnée comprise entre 0 et 1023, ce qui nous donne bien 1024 possibilités.
On utilise pour cela la fonction « analogues(var); ».
Cette fonction permet de lire la valeur qui est affectées au pin auquel le composant est relié.
Il est souvent nécessaire de convertir la valeur lue. En effet, la valeur affichée est comprise entre 0 et 1023, ce qui ne donne pas une tension. Il faut alors convertir cette valeur. Comment ? (Vous aller me dire).
Sachant que la valeur 1023 correspond à 5V, alors à l’aide d’un produit en croix, on retrouve facilement la valeur de la tension désirée.
Exemple
Le programme retourne la valeur 429.
On souhaite la valeur en Volt (V) associée ) 429. On obtient :
valeur = (429 * 5) / 1023
Soit :
valeur = 2.096 V
Ainsi, il suffit de rentrer la formule de conversion dans le programme pour avoir le résultat attendu.
Cependant, il existe une fonction permettant de faire cette conversion de manière automatique. Il s’agit de la fonction :
map(var, extreme_base_entree, extreme_haute_entree, extreme_basse_sortie, extreme_haute_sortie);
En reprenant l’exemple ci-dessus, nous avons simplement à inscrire la fonction suivante :
map(valeurLue, 0, 1023, 0, 5) //ce qui renverra une valeur en mV
ou :
map(valeurLue, 0, 1023, 0, 5000) //ce qui renverra une valeur en V
5. Utilisation d’une sortie
Après avoir appris à commander une entrée, nous allons apprendre à commander une sortie analogique.
Pour effectuer cette action, on utilise la fonction :
analogWrite(var, valeur)
ATTENTION : La fonctions « ananlogWrite(var, valeur), s’utilise seulement avec sur les pins PWM.
Grégoire A.
Bonjour,
je suis en procession d’un controllino Maxi Automation.
Je souhaiterai savoir comment je peu commander une sortie analogique 4-20 mV
MERci