// // ############################## // # MESURES DE LA TEMPERATURE # // ############################## // # Guy Magli 23.01.2023 # // ############################## // # Conception, cablages # // # mises a jour, # // # contact... # // # www.magli.fr # // ############################## // // ! ======================== ! // ! LIBRAIRIES ET PARAMETRES ! // ! ======================== ! // // Afin d'eviter les problemes d'affichage et d'impression les signes diacritiques // ont ete retires des commentaires et des chaines de caracteres. // #include #include // Temperature et humidite #include // Temperature et humidite #include // Pas forcement utile #include // Pour la communication avec un peripherique. #include // Pour la gestion des chaines de caracteres. #include // Pour l'écran #include // Pour le calcul des arrondis // // ! ================================================= ! // ! VARIABLES GLOBALES, CONSTANTES ET INITIALISATIONS ! // ! ================================================= ! // // Pour l'écran // LiquidCrystal lcd(8, 9, 4, 5, 6, 7); int lcd_key = 0; int adc_key_in = 0; #define btnRIGHT 0 #define btnUP 1 #define btnDOWN 2 #define btnLEFT 3 #define btnSELECT 4 #define btnNONE 5 // // : ---------------- : // : Pour les mesures : // : ---------------- : // DHT dhtInt(53, DHT11); // Interieur - Pin 53 et type 22 DHT dhtExt(51, DHT11); // Exterieur - Pin 51 et type 22 int iDelai = 5000; // Temps d'attente. int iTemperature = 0; int iDizaines = 0; int iUnites = 0; String cSigne = "+"; int iInt = 0; int iExt = -0; int iIntMin = 100; int iIntMax = -100; int iExtMin = 100; int iExtMax = -100; // // ! ===== ! // ! Setup ! // ! ===== ! // void setup() { // // : --------------- : // : Initialisations : // : --------------- : // // L'ecran // lcd.begin(16, 2); // // Le capteur // dhtInt.begin(); dhtExt.begin(); // // : ----------- : // : Utilitaires : // : ----------- : // Serial.begin(1200); // // : --------- : // : Generique : // : --------- : // lcd.setCursor(0, 0); lcd.print("THERMOMETRE 1.14"); lcd.setCursor(0, 1); lcd.print(" GUY MAGLI"); delay(iDelai); } // // ! ==== ! // ! Loop ! // ! ==== ! // void loop() { // // Lecture de la temperature interieure, memorisation des extremes // float tI = dhtInt.readTemperature(); float tE = dhtExt.readTemperature(); iInt = round(tI) - 1; iExt = round(tE) - 1; if (iInt < iIntMin) { iIntMin = iInt; } if (iInt > iIntMax) { iIntMax = iInt; } if (iExt < iExtMin) { iExtMin = iExt; } if (iExt > iExtMax) { iExtMax = iExt; } // // Temperatures actuelles, interieure et exterieure // lcd.clear(); lcd.setCursor(0, 0); lcd.print("TEMP. ACTUELLES"); lcd.setCursor(0, 1); lcd.print("INT "); iTemperature = iInt; if (iTemperature > 0) { cSigne = "+"; } else { cSigne = "-"; } iTemperature = abs(iTemperature); iDizaines = iTemperature / 10; iUnites = iTemperature - (iDizaines * 10); lcd.setCursor(4, 1); lcd.print(cSigne); lcd.setCursor(5, 1); lcd.print(iDizaines); lcd.setCursor(6, 1); lcd.print(iUnites); lcd.setCursor(9, 1); lcd.print("EXT "); iTemperature = iExt; if (iTemperature > 0) { cSigne = "+"; } else { cSigne = "-"; } iTemperature = abs(iTemperature); iDizaines = iTemperature / 10; iUnites = iTemperature - (iDizaines * 10); lcd.setCursor(13, 1); lcd.print(cSigne); lcd.setCursor(14, 1); lcd.print(iDizaines); lcd.setCursor(15, 1); lcd.print(iUnites); delay(iDelai*2); // // Temperatures minimales, interieure et exterieure // lcd.clear(); lcd.setCursor(0, 0); lcd.print("TEMP. MINIMALES"); lcd.setCursor(0, 1); lcd.print("INT "); iTemperature = iIntMin; if (iTemperature > 0) { cSigne = "+"; } else { cSigne = "-"; } iTemperature = abs(iTemperature); iDizaines = iTemperature / 10; iUnites = iTemperature - (iDizaines * 10); lcd.setCursor(4, 1); lcd.print(cSigne); lcd.setCursor(5, 1); lcd.print(iDizaines); lcd.setCursor(6, 1); lcd.print(iUnites); lcd.setCursor(9, 1); lcd.print("EXT "); iTemperature = iExtMin; if (iTemperature > 0) { cSigne = "+"; } else { cSigne = "-"; } iTemperature = abs(iTemperature); iDizaines = iTemperature / 10; iUnites = iTemperature - (iDizaines * 10); lcd.setCursor(13, 1); lcd.print(cSigne); lcd.setCursor(14, 1); lcd.print(iDizaines); lcd.setCursor(15, 1); lcd.print(iUnites); delay(iDelai * 2); // // Temperatures maximales, interieure et exterieure // lcd.clear(); lcd.setCursor(0, 0); lcd.print("TEMP. MAXIMALES"); lcd.setCursor(0, 1); lcd.setCursor(0, 1); lcd.print("INT "); iTemperature = iIntMax; if (iTemperature > 0) { cSigne = "+"; } else { cSigne = "-"; } iDizaines = iTemperature / 10; iUnites = iTemperature - (iDizaines * 10); lcd.setCursor(4, 1); lcd.print(cSigne); lcd.setCursor(5, 1); lcd.print(iDizaines); lcd.setCursor(6, 1); lcd.print(iUnites); lcd.setCursor(9, 1); lcd.print("EXT "); iTemperature = iExtMax; if (iTemperature > 0) { cSigne = "+"; } else { cSigne = "-"; } iTemperature = abs(iTemperature); iDizaines = iTemperature / 10; iUnites = iTemperature - (iDizaines * 10); lcd.setCursor(13, 1); lcd.print(cSigne); lcd.setCursor(14, 1); lcd.print(iDizaines); lcd.setCursor(15, 1); lcd.print(iUnites); delay(iDelai * 2); }