top of page

Nous allons maintenant voir le fonctionnement de la partie hygrométrie par rapport au programme.

 

Cette partie requiert quelque notion de programmation, dans le cas où vous desireriez plus ample information, je vous conseil ces deux tutoriel :

 

Apprenez à programmer en C !

et

Arduino pour bien commencer en électronique et en programmation

Voici donc la première partie du programme.

C'est ici que les variables sont déclarées, ainsi que les bibliothèques.

 

Ce qui suit les "#include" sont les bibliothèque qui serve au programme.

Elle vont permettre d'appeller de nouvelles fontions qui ne figure pas dès le départ dans le logiciel de programmation.

 

Les "#define" permette de remplacer certaine parties dans le programme.

Par exemple, dès qu'apparaitera "DHTPIN", le programme le remplacera par "A2".

 

Les lignes suivantes sont des déclarations de variables de différentes tailles qui vont servir par la suite dans le programme.

Par exemple les seuils, qui vont déterminés les limite du pourcentage d'humidité dans l'air.

 

Petite précision : les lignes en grise sont des lignes de commentaires, elles servent aux programmateurs à décrire leurs programmes afin de ne pas se perdre ou d'oublier certaine choses au fils du temps, et de pouvoir travailler à plusieurs dessus.

Voici ensuite la seconde parti du programme :

la fonction setup !

Une fonction est une succession d'ordre situé entre les accolades.

"void" représente le type de la fonction.

"setup" est son nom.

C'est une des deux fonctions minimal du programme, c'est à dire qu'elle est obligatoire, même si l'on ne met rien dedans.

La fonction setup ne vas être exécutée qu'une seul foi,

lorsque l'on vas lancer le programme.

 

Ici, nous pouvons voir deux ligne de code dans la fonction.

La première vas permettre d'initialisé la communication série avec l'ordinateur.

Pour ce programme elle va seulement servir à faire des test dans le programme afin de trouver les éventuelles erreur ( et il y en a toujours ).

La seconde ligne vas permettre d'initialiser les fonction de la bibliothèque "DHT".

 

 

Ceci est la fonction "loop" ( boucle en anglais ).

C'est la deuxième fonction obligatoire, et c'est elle qui vas représenter notre programme.

​La fonction loop est répétée en continue par la carte Arduino.

L'idéal pour notre fonction loop est de ne faire qu’appeler des sous fonction comme ici.

Le programme est ainsi plus structuré et plus facile à comprendre.

Les sous fonctions sont des fonctions ( comme setup et loop ) créées par le programmateur afin de remplir certaine instructions.

Ces instructions peuvent être ainsi appelées à  plusieurs moments, évitant notamment les répétitions dans l'écriture du programme.

 

Ici, notre fonction loop vas appelée plusieurs autre fonction :

-"lireHumidite" qui vas permettre de lire le taux d'humidité dans l'air

-"afficherHumidite" qui vas envoyer ces donnée par le câble USB à l'ordinateur afin de les affichées.

-"testSeuil" permettant de savoir où se situe le taux d'humidité par rapport au seuil

-"ventilation" qui vas permettre d'agir en fonction des seuil et de l'humidité ambiante

 

La fonction vas ensuite repartir au début ( "lireHumidite" ), et ainsi de suite, à l'infini.

 

Voici la fonction "serialEvent", que je n'ai pas encore évoqué.

Cette fonction à été créée par les concepteur d'Arduino,

elle est testée à chaque début de la fonction "loop".

A chaque passe au début de cette fonction, avant "lireHumidite",

le programme appellera "serialEvent".

J'ai introduit cette fonction afin de "réguler les seuils".

En effet, si l'utilisateur entre les seuils n'importe comment,

par exemple le seuil maximum inférieur au seuil minimum,

cela entraînera des problèmes lors de l’exécution des tâches.

Si cela se produit les seuils sont rétablis par défaut à 10% au dessus et en dessous du seuil moyen.  

La fonction ci-dessus est la première figurant dans notre fonction principal : "loop".

Elle va, comme son nom l'indique, lire le taux d'humidité dans l'air.

Dans la première ligne, grâce à une fonction de notre bibliothèque DHT, 

nous lisons la valeur, en pourcentage, du taux d'hygrométrie, renvoyé par le capteur.

Cette valeur est stockée dans la variable "humidite".

Ensuite, grâce à notre fonction d'instruction "if" nous testons la valeur de la variable afin de savoir s'il n'y a pas eu de problème à la lecture;

si c'est le cas, nous envoyons un message d'erreur à l'ordinateur.

 

A la fin de cette fonction, le programme retournera à "loop" et continuera d'effectuer les instructions y figurant, comme à la fin de toutes les sous-fonctions qui vont suivre.

Et voilà la fonction d'affichage du pourcentage d'humidité dans l'air.

Elle est, elle aussi, assez simple.

Nous testons, grâce au "if" ( "si" en anglais ), si le temps écoulé

( la fonction d'instruction "millis()" comptabilise le temps écoulé depuis le lancement du programme, comme un chronomètre )

depuis la dernière mise à jour de la variable temps à dépassé les 2000 milli seconde

( nous ne pouvons mettre  = 2000, car il y a trop peu de chance que le programme lise cette condition pile au bon moment ).

Si c'est le cas, le programme exécute les instructions figurant entre les deux accolades.

Nous allons afficher grâce à "Serial.print" et "Serial.println"

( la seul différence est que le programme reviens à la ligne derrière le "Serial.println" ) 

le message ou la valeur de la variable entre parenthèse. 

Si il a des guillemets, le message est de type texte, sinon c'est une variable.

Pour finir, nous mettons à jour la variable temps

(de cette manière, nous serons, quand est-ce que le programme sera passé dans la boucle pour la dernière fois).

 

Voici la troisième sous fonction de notre programme : "testSeuil".

Cette fonction se résume en trois chose : trois condition.

Grâce à la variable "humidite" où nous avons précédemment stocké le taux d'humidité,

nous allons testé respectivement, si le pourcentage d'humidité :

 

- se trouve autour du seuil moyen à 5% prêt 

(on met alors la variable "action" à 0)

 

- est inférieur au seuil minimum 

(on met alors la variable "action" à 1)

 

- est supérieur au seuil maximum 

(on met alors la variable action à 2)

 

La valeur de la variable "action" va nous permettre d'agir par la suite.

Et voilà notre dernière fonction, elle va permettre d'agir en fonctionde notre variable action, mis à jour précédement.

Notre première instruction, "switch", semblable à plusieurs "if" regroupés,

va nous permettre de donner des instructions suivant la valeur de la variable "action".

 

Si elle est égal à 1 ( taux d'hygrométrie inférieur au seuil minimum ), nous activons un relai qui vas permettre la mise en marche de la pompe.

 

 

Si elle est égal à 1 ( taux d'hygrométrie inférieur au seuil maximumu ), nous activons les deux ventilateurs ( branchés en série ) progressivement jusqu'à son maximum

( grâce à la fonction d'instruction "for" ), puis nous le laissons allumé jusqu'à que le taux d'hygrométrie soit aproximativement égal au seuil moyen.

Quand ce pallier a été atteint, nous éteignons petit à petit ces ventilateur.

bottom of page