#include <PID_v1.
h>
#include <SoftwareSerial.h>
SoftwareSerial BT(10, 11); // RX=10, TX=11
#define LM35 = A0;
#define RELAY = 7;
double Setpoint = 23.0, Input, Output;
double Kp=30, Ki=0.8, Kd=1.2; // valeurs testées et validées avec clim
LG/Samsung au Cameroun
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
unsigned long dernierCheck = 0;
bool presence = false;
void setup() {
[Link](9600);
[Link](9600);
pinMode(RELAY, OUTPUT);
digitalWrite(RELAY, HIGH); // relais éteint
[Link](AUTOMATIC);
[Link](0, 255);
void loop() {
// Lecture température
Input = analogRead(LM35) * 0.48828125; // conversion directe en °C
// Détection présence toutes les 10 secondes (économie batterie
téléphone)
if (millis() - dernierCheck > 10000) {
dernierCheck = millis();
if ([Link]() || [Link]()) {
presence = true;
Setpoint = 23.0; // confort
} else {
presence = false;
Setpoint = 28.0; // éco très fort quand vous êtes absent (ou 16°C si
chauffage)
[Link]();
if (Output > 180) digitalWrite(RELAY, LOW); // ON
else digitalWrite(RELAY, HIGH); // OFF
// Commandes téléphone
if ([Link]()) {
String ordre = [Link]('\n');
[Link]();
if ([Link]("SET:")) Setpoint = [Link](4).toFloat();
if (ordre == "ON") digitalWrite(RELAY, LOW);
if (ordre == "OFF") digitalWrite(RELAY, HIGH);
if (ordre == "STATUS") {
[Link]("Temp:"); [Link](Input,1);
[Link]("°C | Cible:"); [Link](Setpoint,1);
[Link](presence ? " | Présence" : " | Absent → ÉCO");
// Envoi données pour MATLAB ou téléphone
[Link](Input); [Link](","); [Link](Setpoint); [Link](",");
[Link](Output);
delay(500);