Arduino – Capteur de température + LCD
DevFrançaisTutorials
On part sur la base du post précédent https://blog.quidquid.fr/fr/2010/11/arduino-capteur-de-temperature/ et on y ajoute :
– une platine labdec 400 points (breadboard)
– un afficheur LCD
– un potentiomètre (fourni avec l’écran LCD)
– une pile… et son connecteur
Le tout acheté chez oomlout et expédié 30 minutes après la commande, je recommande chaudement ! (pas de sponsoring inside)
L’objectif est d’obtenir sur un écran LCD (luminosité réglable avec un potentiomètre) la température observée à l”endroit où l’on se trouve.
L’API de référence pour utiliser l’écran LCD se trouve ici http://arduino.cc/en/Reference/LiquidCrystal et il est indispensable d’importer les librairies afin d’utiliser cette API.
La librairie se télécharge là : http://arduino.cc/en/uploads/Tutorial/LiquidCrystal.zip
Et un tutoriel très complet se trouve ici : http://www.arduino.cc/en/Tutorial/LCDLibrary
Pour installer la librarie dans Arduini IDE il suffit de dézipper la librairie dans le répertoire
arduino-xxxx/lib/targets/libraries où xxxx est votre numéro de version d’arduino IDE.
Voici le petit schéma de câblage:
Le code à transmettre à la carte :
/* * WTF Public License * * The circuit: * LCD RS pin -> digital pin 9 * LCD Enable pin -> digital pin 8 * LCD D4 pin -> digital pin 13 * LCD D5 pin -> digital pin 12 * LCD D6 pin -> digital pin 11 * LCD D7 pin -> digital pin 10 * LCD R/W pin -> GND * Potentiometre qui fait office de 10K resistor: */ #include <math.h> #include <LiquidCrystal.h> LiquidCrystal lcd(9, 8, 13, 12, 11, 10); void setup() { // On précise le nombre de colonnes et de lignes lcd.begin(16, 2); // On place le curseur sur la colonne 0 de la premiere ligne lcd.home(); // Afficher la phrase suivante : lcd.print("Temperature : "); } void loop() { // 0 est le port analogique sur lequel est branché mon capteur de température int temp = int( getTemp( analogRead( 0 ) ) ); // On place le curseur sur la colonne 7 (pour afficher la // température environ au milieu) de la seconde ligne lcd.setCursor(7, 1); // Afficher la temperature en provenance du capteur lcd.print(temp); // avec un semblant d'unite derriere lcd.print(" C"); // On attend 5 seconde avant de refaire une autre mesure delay(5000); } double getTemp(int rawData) { double temperature = log( ( ( 10240000 / rawData ) - 10000 ) ); temperature = 1 / (0.001129148 + (0.000234125 * temperature) + (0.0000000876741 * temperature * temperature * temperature)); // Convert Kelvin to Celcius return temperature - 273.15; }
Il est bien entendu possible d’améliorer ce code en remplaçant :
lcd.setCursor(0, 0);
par
lcd.home()
qui doit faire la même chose.
De plus il est certainement mieux de n’écrire qu’une seule fois “Temperature :” en le faisant dans setup pour ne modifier que la température dans loop.
Pour la prochaine étape nous écrirons les données captées sur une carte microSD…
2 Comments