BlueNova

Arduino, acquisition de données : Késako ?

13 posts in this topic

logo-arduino.jpg

Pour n'importe quel système, il est important d'acquérir des données provenant de l'extérieur: Température, position, angle avec le sol, luminosité, bruit ambiant... Bref, ces données permettent le fonctionnement de système et surtout, son adaptation aux situations qu'il rencontre ou rencontrera.

Sur Arduino, les données sont catégorisées en deux grandes parties : Les données numériques et analogiques.

Toutes les données sont récupérées à partir de capteurs, branchés sur les broches de la carte Arduino.

Les Données Analogiques

Ce type de données permet d'obtenir une valeur pouvant être un nombre, décimal, compris entre un minimal et un maximal.
Pour des raisons techniques, la carte récupère une certaine tension, comprise entre 0 et 5 Volts. Elle convertit ensuite cette valeur directement pour obtenir un nombre, entier, compris entre 0 et 1023.

Pour récupérer directement une donnée analogique, il suffit d'utiliser la méthode analogRead de la façon suivante :

int val = analogRead(A0);

Cette ligne de code stockera la valeur du capteur branché sur le port analogique A0. Par contre, à vous de savoir récupérer valeur physique derrière ce nombre.

Par exemple, prenons le cas d'un capteur prenant la forme d'une règle, de longueur maximale de 5 centimètres , retournant la distance entre l’extrémité de la règle et un point bien précis. Si vous prenez comme point la même extrémité, la valeur reçue sera égale à 0. Mais si vous vous placez à 5 centimètres, soit la valeur maximale, vous obtiendrez... 1023. Un petit travail de conversion s'offre à vous, cela mérite une explication plus détaillée dans un prochain article.

Les Données Numériques

Ce sont des données qui, de façon générale, représente un état binaire (tout ou rien). On peut citer par exemple, l'état d'un bouton (Appuyé/Non appuyé), l'état d'une lampe (Allumée/Non allumée), etc.

Sous Arduino, ces données prennent donc généralement deux valeurs: HIGH, qui correspond à l'état logique Haut, et LOW, qui correspond à l'état logique Bas.

De plus, la récupération d'une donnée numérique est un petit peu plus délicate. Au préalable, il faut préciser de quelle façon on va utiliser le port associé au capteur, s'il s'agit d'une entrée, ou d'une sortie. Dans notre cas, il s'agit bien évidemment d'une entrée (on récupère la donnée, on ne l'envoie pas...)

Il faut donc entrer dans la méthode setup la ligne de code suivante :

pinMode(5, INPUT);

À l'aide de pinMode, on indique à la carte que le port n°(D)5 est un INPUT, soit une entrée. Une fois cela fait, un peut utiliser dans la méthode loop ou setup le code suivant:

int value = digitalRead(5);

On aura donc, dans la variable value, le nombre numérique renvoyé par le capteur. Dans le cas d'un capteur tout ou rien, l'état haut sera représenté par le 1, l'état bas par le 0.

Un autre type d'entrée existe pour les capteurs numériques: il s'agit du type INPUT_PULLUP. Nous détaillerons ce type d'entrée plus en détail dans un autre article.

Au final, ces données sont toujours récupérées sous la forme d'un nombre.

Mais alors, pourquoi faire une différence entre ces deux données ?

Ces deux données, malgré leurs similtudes, n'ont rien en commun: il ne s'agit ni du même type de capteur, ni du même phénomène mesuré. Par exemple, pour l'exemple du bouton, on ne cherche à avoir que deux états, les états intermédiaires (40% appuyé, 10% appuyé, effleuré) ne nous intéressent pas, et la distinction entre ces deux types de données nous facilite grandement la tâche en programmation.

Voilà, c'était une brève introduction à l'acquisition de données sous Arduino. Avec ça, vous pouvez faire le minimum dans la gestion de données de capteurs ;)

Share this post


Link to post
Share on other sites

Un article super intéressant et bien expliqué ! Je pense que ça en éclairera plus d'un dans ce domaine, à commencer par moi !:angel: 


Gameuse Muse, Administratrice du forum. 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now