/**
* Mesures de températures avec trois capteurs DS18B20 GROVE
* Les mesures sont envoyées sur la liaison série et affichées sur un écran LCD Grove
*/
/* Inclure les bibliothèques */
#include <OneWire.h>
#include <DallasTemperature.h>
#include "rgb_lcd.h"
/* Création de l'objet OneWire et sensors */
//OneWire oneWire(ONE_WIRE_BUS);
OneWire capteur1(5); // Création d'un objet One Wire sur la broche D5 => température T1
OneWire capteur2(6); // Création d'un objet One Wire sur la broche D6 => température T2
OneWire capteur3(7); // Création d'un objet One Wire sur la broche D7 => température T3
// Indiquer la référence OneWire à la bibliothèque Dallas Temperature.
DallasTemperature sensors1(&capteur1);
DallasTemperature sensors2(&capteur2);
DallasTemperature sensors3(&capteur3);
/* Ecran LCD GROVE */
rgb_lcd lcd;
/* Pour faire des mesures à intervalle régulier */
unsigned long tempsPrecedent = 0;
float intervalle = 3000; // durée entre deux mesures en ms (valeur minimun : 2000)
void setup() {
Serial.begin(115200); // choix de la vitesse
sensors1.begin();
sensors2.begin();
sensors3.begin();
/* Ecran LCD */
// Définir le nombre de colonnes et de lignes de l'écran LCD
lcd.begin(16, 2);
}
void loop(){
unsigned long tempsCourant = millis(); // cette variable contient le nombre de millisecondes depuis que le programme courant a démarré.
if (tempsCourant - tempsPrecedent >= intervalle) {
tempsPrecedent = tempsCourant;
/* Demande la température aux capteurs */
sensors1.requestTemperatures();
float temperature_1 = sensors1.getTempCByIndex(0); // obtenir la température 1 en degré
sensors2.requestTemperatures();
float temperature_2 = sensors2.getTempCByIndex(0); // obtenir la température 2 en degré
sensors3.requestTemperatures();
float temperature_3 = sensors3.getTempCByIndex(0); // obtenir la température 3 en degré
/* envoie les températures sur la liaison série */
Serial.print(temperature_1, 1);
Serial.print(","); // les données sont séparées par des virgules.
Serial.print(temperature_2, 1);
Serial.print(","); // les données sont séparées par des virgules.
Serial.print(temperature_3, 1);
Serial.println();
/* Affiche les températures sur l'écran lcd */
lcd.clear(); // effacer l'écran
lcd.setCursor(0,0); // mettre le curseur à la première colonne, première ligne
lcd.print("T1=");
lcd.print(temperature_1, 1);
//lcd.print((char)223); // symbole °
//lcd.print("C");
lcd.setCursor(0,1); // mettre le curseur à la première colonne, deuxième ligne
lcd.print("T2=");
lcd.print(temperature_2, 1);
//lcd.print((char)223); // symbole °
//lcd.print("C");
lcd.setCursor(9,0); // mettre le curseur à la première colonne, première ligne
lcd.print("T3=");
lcd.print(temperature_3, 1);
//lcd.print((char)223); // symbole °
//lcd.print("C");
}
}