Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
issue93:arduino [2015/03/16 19:59] – d52fr | issue93:arduino [2015/03/18 17:22] (Version actuelle) – andre_domenech |
---|
It’s not elegant by any means, but it works.** | It’s not elegant by any means, but it works.** |
| |
Le mois dernier, je vous ai montré ce que j'ai fait de ma porte automatique de poulailler. Bien ! Comme toujours, quand je m'arrange pour règler un problème, il en surgit deux autres de plus grande complexité. Mon système est passé d'un simple servo et un LDR [photorésistance] à un servo complet, une LDR, un détecteur d'humidité et un écran LCD. | Le mois dernier, je vous ai montré ce que j'avais déjà pour ma porte automatique de poulailler. Eh, bien, comme toujours, quand je réussis à régler un problème, j'y introduis quelque chose de deux fois plus complexe. Mon système est maintenant passé d'un simple servo et une LDR [photorésistance] à un servo complet, une LDR, un détecteur d'humidité et un écran LCD. |
| |
Un servo tourne en général de zéro à 180° et, dans le code, nous pouvons spécifier jusqu'à quel angle nous voulons que le servo bouge. Un servo complet est (pour ce que j'ai pu comprendre) quelque part entre un moteur et un servo. Vous le traitez comme un servo dans le code, mais c'est plutôt comme un moteur car il tourne sur 360° et vous ne pouvez pas spécifier un angle. Ceci me posa un bon problème quand j'ai dû lever la porte, puis à l'inverse pour baisser la porte. J'ai finalement résolu ce problème avec une bidouille en utilisant la commande open : | Un servo tourne en général de zéro à 180° et, dans le code, nous pouvons spécifier jusqu'à quel angle nous voulons que le servo bouge. Un servo complet est (pour ce que j'ai pu comprendre) quelque part entre un moteur et un servo. Vous le traitez comme un servo dans le code, mais c'est plutôt comme un moteur car il peut tourner sur 360°, mais vous ne pouvez pas spécifier un angle. Ceci me posa un bon problème quand je devais lancer le servo en avant pour lever la porte, puis en arrière pour baisser la porte. J'ai finalement résolu ce problème avec un truc plus ou moins bâclé en utilisant la commande open : |
| |
myServo.write(openDoor); | myServo.write(openDoor); |
Vous connaissez l'écran LCD du projet de détecteur de mouvement à laser. L'implémentation était surtout un travail de copier/coller, mais avec la complexité ajoutée du capteur d'humidité. | Vous connaissez l'écran LCD du projet de détecteur de mouvement à laser. L'implémentation était surtout un travail de copier/coller, mais avec la complexité ajoutée du capteur d'humidité. |
| |
Le capteur d'humidité est un modèle DHT11 ; utilisez simplement un include pour la librairie dht11. Si vous ne l'avez pas, les fichiers correspondants et l'info sont disponibles sur : http://playground.arduino.cc/main/DHT11Lib. Installer les fonctions d'humidité et de température est un peu délicat parce qu'elles utilisent des notions mathématiques assez complexes pour convertir les nombres usuels en quelque chose que nous pouvons lire comme des °C. Je ne vais même pas prétendre savoir ce que font ces fonctions. Je les ai copiées/collées d'un autre programme trouvé sur la page DHT11, et après quelques recherches Google. La boucle loop() a un chk où nous lui précisons le picot d'entrée du capteur : | Le capteur d'humidité est un modèle DHT11 ; utilisez simplement un include pour la library (bibliothèque) dht11. Si vous ne l'avez pas, les fichiers correspondants et l'info sont disponibles sur : http://playground.arduino.cc/main/DHT11Lib. Installer les fonctions d'humidité et de température est un peu délicat parce qu'elles utilisent des notions mathématiques assez complexes pour convertir les nombres usuels en quelque chose que nous pouvons lire comme des °C. Je ne vais même pas prétendre savoir ce que font ces fonctions. Je les ai copiées/collées d'un autre programme trouvé sur la page DHT11 et après quelques recherches Google. La boucle loop() a un chk où nous lui précisons le picot d'entrée du capteur : |
| |
int chk = DHT11.read(DHT11PIN); | int chk = DHT11.read(DHT11PIN); |
| |
Ensuite, nous lançons la commande switch pour vérifier que le capteur est bien branché (encore une fois, ce n'est pas mon code). Il y a plusieurs lignes pour afficher à l'écran les valeurs converties : | Ensuite, nous lançons la commande switch pour vérifier que le capteur est bien branché (encore une fois, ce n'est pas mon code). Il y a plusieurs lignes pour afficher les valeurs converties à l'écran : |
| |
Serial.print("Humidity (%): "); | Serial.print("Humidity (%): "); |
lcd.print(DHT11.temperature); | lcd.print(DHT11.temperature); |
| |
Maintenant que j'ai fait le prototype, j'ai juste besoin de mettre l'Arduino Nano dans un boîtier plastique et de rallonger les fils pour le placer à un endroit judicieux. | Maintenant que j'ai fait le prototype, j'ai juste besoin de mettre l'Arduino Nano (avec la planche) dans un boîtier plastique et de rallonger les fils pour le placer à un endroit judicieux. |
| |
Mon code final est disponible sur : http://pastebin.com/ES421PHV.** | Mon code final est disponible sur : http://pastebin.com/ES421PHV.** |