#include <Keypad.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
#define ONE_WIRE_BUS 12 //La ligne de communication pour les DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
//Constants
#define ROWS 4
#define COLS 4
//Parameters
const char kp4x4Keys[ROWS][COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}};
byte rowKp4x4Pin [4] = {9, 8, 7, 6};
byte colKp4x4Pin [4] = {5, 4, 3, 2};
//variable pour le lecture du clavier
String clavier = "";
//Variables pour l'utilisation du clavier
Keypad kp4x4 = Keypad(makeKeymap(kp4x4Keys), rowKp4x4Pin, colKp4x4Pin, ROWS, COLS);
//variable servant a la selection de la sonde à afficher sur l'écran
String complet = "1";
//variables contenant les informations à afficher sur l'écran
String infoSonde = "";
String valeurSonde = "";
float recupTemp(String sonde){
int val = sonde.toInt();
return sensors.getTempCByIndex(val);
}
void readKp4x4() { /* function readKp4x4 */
//// Read button states from keypad
char customKey = kp4x4.getKey();
/*if (customKey) {
if(String(customKey)=="#"){
complet = clavier;
clavier = "";
}
else{
clavier += String(customKey);
}
}*/
if (customKey) {
complet = String(customKey);
}
//String RecupValeur
switch(complet.toInt()){
//DS18B20
case 1: infoSonde = "Sonde DS18B20(1)";
valeurSonde = String(recupTemp("0")) + " C";
break;
//DS18B20
case 2: infoSonde = "Sonde DS18B20(2)";
valeurSonde = String(recupTemp("1")) + " C";
break;
//DS18B20
case 3: infoSonde = "Sonde DS18B20(3)";
valeurSonde = String(recupTemp("2")) + " C";
break;
//DS18B20
case 4: infoSonde = "Sonde DS18B20(4)";
valeurSonde = String(recupTemp("3")) + " C";
break;
//DS18B20
case 5: infoSonde = "Sonde DS18B20(5)";
valeurSonde = String(recupTemp("4")) + " C";
break;
//DS18B20
case 6: infoSonde = "Sonde DS18B20(6)";
valeurSonde = String(recupTemp("5")) + " C";
break;
//DS18B20
case 7: infoSonde = "Sonde DS18B20(7)";
valeurSonde = String(recupTemp("6")) + " C";
break;
//DS18B20
case 8: infoSonde = "Sonde DS18B20(8)";
valeurSonde = String(recupTemp("7")) + " C";
break;
//DS18B20
case 9: infoSonde = "Sonde DS18B20(9)";
valeurSonde = String(recupTemp("8")) + " C";
break;
default: infoSonde = "Erreur Clavier";
valeurSonde = "valeur inconnue";
}
lcd.clear();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(infoSonde);
lcd.setCursor(0,1);
lcd.print(valeurSonde);
}
void setup() {
// put your setup code here, to run once:
lcd.init();
sensors.begin();
}
void loop() {
// put your main code here, to run repeatedly:
sensors.requestTemperatures();
readKp4x4();
}