Arduino starter kit

Questions

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut tout le monde,

J'ai reçu pour Noël l'Arduino Starter Kit. Il est basique mais vraiment bien expliqué et détaillé, avec une quinzaine de projets à suivre pas à pas pour débuter avec le kit.

J'en suis actuellement au 3ème tutoriel où il est question d'utiliser un TMP36 (capteur analogue de température) et la liaison série de l'Arduino pour récupérer ces données dans le serial monitor de l'IDE. Jusque là, pas de souci, tout fonctionne. Pour se lancer, ils recommandent de relever la valeur de base donnée par le capteur lors de la première éxécution et de s'en servir comme valeur étalon. Puis le guide mentionne l'existence d'une procédure de calibration que l'on peut suivre pour ne pas avoir à changer ça manuellement: http://arduino.cc/calibration

J'ai lu ce tuto et compris l'essentiel, à part le point suivant:

  • Le capteur présenté est capable de retourner 1024 valeur distinctes (10 bits)
  • Le tutoriel utilise la fonction suivante: sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);

(où sensorValue est la valeur actuelle, sensorMin est la valeur minimale lors de la calibration et sensorMax la valeur max lors celle-ci)

Déjà, cette fonction prend un espace large de 1024 valeurs et le représente sur 256 (8 bits). On perd donc 2 ordres de grandeur de précision sur la valeur donnée. Pourquoi faire ça ? Ou alors je n'ai pas compris à quoi servait cette fonction.

De plus, on utilise plus loin: sensorValue = constrain(sensorValue, 0, 255); ce qui a pour effet de ramener les valeurs en dehors de la zone de calibration dans le champ des données possibles.

Dans le cas du capteur de température, que l'on calibre prendant 5 secondes d'après le tuto, cela veut-il dire que si la température diminue au delà de la valeur minimale mesurée lors de la calibration, on affichera quand même cette dernière ? Si oui, je ne comprends pas l'intérêt.

Bref, je suis paumé. Est-ce que vous pouvez m'expliquer ?

Merci d'avance pour votre aide.

Édité par elvian

+0 -0

Salut !

Déjà, cette fonction prend un espace large de 1024 valeurs et le représente sur 256 (8 bits). On perd donc 2 ordres de grandeur de précision sur la valeur donnée. Pourquoi faire ça ? Ou alors je n'ai pas compris à quoi servait cette fonction.

Tu as bien compris le but, faire la translation d'un intervalle a un autre. Par contre pourquoi passer sur 0-255 je ne sais pas dans ce cas precis ce que cela apporte. Peut-etre veulent-ils travailler sur des char plutot que des int ?

De plus, on utilise plus loin: sensorValue = constrain(sensorValue, 0, 255); ce qui a pour effet de ramener les valeurs en dehors de la zone de calibration dans le champ des données possibles.

Ca semble redondant avec l'utilisation de la fonction map, c'est bizarre. (mais faudrait voir le code complet, peut etre une manipulation entraine ca ? Ou peut-etre je n'ai pas tout compris c'est possible aussi :D )

Si ca t'interesse, j'avais fait un bout de tuto sur "Comment etalonner son capteur", ca peut peut-etre t'interesser :)

ZdS, le best du Zeste ! Tuto Arduino, blog, etc

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte