// Lycée PE MARTIN
// Le 4/1/2023
// Titre : Thermomètre
// Matériels : Arduino Uno, lcd 2x16 I2C, NTC KY-013
// Description : voir le sujet
// Ressources
// Bibliothèque : https://www.arduino.cc/reference/en/libraries/liquidcrystal/
// Bibliothèque
#include <LiquidCrystal_I2C.h>
// Paramètres de l'objet lcd
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
// CTN
#define KY_013 A0 // Module KY-013 (CTN+R) connecté à l'entrée analogique A0
const float BETA = 3950;
// LED
#define LED 8
// Création de l'objet lcd
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
void setup() {
// Initialisation de la console
Serial.begin(9600);
// Configuration de la broche LED
pinMode(LED, OUTPUT);
// Initialisation du LCD
lcd.init(); // A placer en premier
lcd.backlight(); // Commande du rétroéclairage
lcd.print("Thermometre");
delay(3000);
}
// Programme principal
void loop() {
// Lire
// ------------------------------
int N = analogRead(KY_013);
// Traiter
// ------------------------------
// Modèle linéarisé
//float Temp = (798.72- N)/11.469;
// Modèle non linéarisé
float Temp = 1 / (log(1 / (1023.0 / N - 1.0)) / BETA + 1 / 298.15) - 273.15;
// Alarme
if (10<= Temp <=40){ // ((Temp <10) || (Temp >40))
digitalWrite(LED,LOW);
}
else{
digitalWrite(LED,HIGH);
}
// Ecrire
// ------------------------------
// Ecrire dans la console
Serial.print("Temperature: ");
Serial.print(Temp);
Serial.println("℃");
// Ecrire sur le LCD
lcd.clear();
lcd.print("Temp.:");
lcd.print(Temp);
lcd.write(0xdf); // °
lcd.print("C");
// Une mesure par seconde
delay(1000);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL
gnd1:GND
gnd2:GND
vcc1:VCC
vcc2:VCC
vcc3:VCC
gnd3:GND
Thermistance CTN & R
THERMOMETRE
KY-013
ntc1:GND
ntc1:VCC
ntc1:OUT
led1:A
led1:C
r1:1
r1:2
gnd4:GND