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