Arduino - Afficher une température sur un LCD

ic2-repere


Installer et configurer le LCD1602 - I2C

Arduino - Afficheur LCD1602 - I2C


J'utilise pour la température les matériels ci-dessous

Un capteur LM35

Le capteur de température LM35 est un capteur analogique de température
Le capteur LM35 supporte des températures de -55°C/+150°C (Mais pas l'Arduino)


Une sonde DS18B20

La sonde de température DS18B20 est une sonde digitale de température
La sonde de température DS18B20 supporte des températures de -55°C/+125°C (Mais pas l'Arduino)



le schéma avec le capteur lm35

  • arduino-lcd-lm35-temp
  • 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

  • lm35-temperature-code
  • lm35-temperature


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 floaten 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

  • arduino-lcd-ds18b20
  • 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

  • onewire
  • dallas temperature
  • arduino-lcd-ds18b20-code
  • arduino-lcd-ds18b20


Nous installons des bibliothéques

  • One Wire de Jim Sdudt
  • Dallas Température de Miles Burton
La bibliothèque wire est déjà présente


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
}