Arduino - Afficher une température sur un LCD
Installer et configurer le LCD1602 - I2C
Arduino - Afficheur LCD1602 - I2C
J'utilise pour la température les matériels ci-dessous
Un capteur LM35
Une sonde DS18B20
le schéma avec le capteur lm35
Connecter le LCD1602 - I2C et le capteur LM35 à l'Arduino Uno suivant le schéma ci-contre
Cablage LCD
- Gnd au Gnd
- Vcc au +5v
- SDA sur la broche 18 - A4
- SCL sur la broche 19 - A5
Cablage LM35
- Vcc au +5v
- Out sur la broche 14 - A0
- Gnd au Gnd
.
Un condensateur céramic de 100nF est recommandé entre le +5v et le Gnd
Afficher la température - capteur LM35 - Lcd1602-I2c
Régle de calcul de la température avec le capteur LM35
Température LM35 ou LM335
Transformer le résultat de la mesure en un nombre à virgule (type float) en faisant un simple produit en croix.
- 5V = 5000mV = 1023
- en sortie analogRead() 10mV = 1°C
- température = valeur_mesurée * (5.0 / 1023.0 * 100.0)
Le code
/*
Temperature LM35 ou LM335
Transformer le résultat de la mesure en un nombre à virgule (type float)
en faisant un simple produit en croix.
5V = 5000mV = 1023
en sortie analogRead(), 10mV = 1°C
température = valeur_mesurée * (5.0 / 1023.0 * 100.0)
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Definition des variables
int tempPin = 0; // Broche A0
float valBrute; // Valeur brute sur A0
float valTemp; // Temperature
LiquidCrystal_I2C lcd(0x27,16,2); // LCD1602 I2C 0x27
void setup()
{
lcd.init(); // Initialisation du LCD
}
void loop()
{
// Mesure la tension sur la broche A0
float valBrute = analogRead(tempPin);
// Calcul de la température en degré Celcius
float valTemp = valBrute * (5.0/1023.0 *100.0);
// Affichage sur LCD.
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Temperature : ");
lcd.setCursor(1,1);
lcd.print(valTemp);
lcd.setCursor(6,1);
lcd.print(" Celcius");
delay(1000);
}
Le schéma avec une sonde DS18B20
Connecter le LCD1602 - I2C et la sonde DS18B20 à l'Arduino Uno suivant le schéma ci-contre
Cablage LCD
- Gnd au Gnd
- Vcc au +5v
- SDA sur la broche 18 - A4
- SCL sur la broche 19 - A5
Cablage DS18B20
- Vcc au +5v
- Data sur la broche 8 - Digital 8
- Gnd au Gnd
.
Ne pas oublier la résistance de 4700 Ohms entre +5V et le fils Data de la sonde DS18B20
Afficher la température - sonde DS18B20 - lcd1602-I2c
Nous installons des bibliothéques
- One Wire de Jim Sdudt
- Dallas Température de Miles Burton
Dans l'Arduino IDE, cliquer sur
- Croquis
- Inclure une bibliothèque
- Gérer les bibliothéques [Ctrl]+[Maj]+[i]
Dans la fenêtre "Gestionnaire de bibliothèques"
Rechercher "One Wire" de Jim Studt et "Dallas Temperature" de Miles Burton
Une fois trouver, cliquer sur [Installer] pour chaques bibliothèques
Le code
/*
Température DS18B20 - LCD 1602 - I2C
*/
#include <Wire.h> // Librairie I2C
#include <LiquidCrystal_I2C.h> // Librairie Lcd1602 I2C
#include <OneWire.h> // Librairie OneWire bus
#include <DallasTemperature.h> // Librairie DS18B20 temperature
#define ONE_WIRE_BUS 8 //DS18B20 broche 8
OneWire oneWire(ONE_WIRE_BUS); // Instance oneWire pour communiquer avec tous les appareils OneWire
DallasTemperature sensors(&oneWire); // Transfert de OneWire à DallasTemperature
LiquidCrystal_I2C lcd(0x27,16,2); // LCD1602 adresse 0x27 16 colonnes 2 lignes
void setup()
{
lcd.init();
lcd.backlight(); //Turns backlight on
sensors.begin();
}
void loop()
{
sensors.requestTemperatures();
float temp = sensors.getTempCByIndex(0); // Lecture DS18B20
lcd.setCursor (0, 0 ); // Affichage
lcd.print("Temperature : ");
lcd.setCursor(1,1);
lcd.print(temp);
lcd.setCursor(6,1);
lcd.print(" Celcius");
delay(100); // Tempo 0.1 sec
}