Allumer une LED en fonction de la température + affichage température

 

LE MONTAGE : 

On branche la sonde de température sur A1 sur la base Shield Grove, la LED sur D4 et L'affichage sur D2.

Interrupteur sur 5V

 

Allumer une LED en fonction de la température + affichage température

 

PROGRAMME :

Ce programme permet de lire la température (25,2°C -> X2:52) en sortie de sonde toutes les secondes, de l'afficher sur l'afficheur et lorsque la température dépasse les 60°C la LED doit s'allumer.

Il permet également de calibrer la sonde température, entrer la température de la pièce dans l'afficheur du moniteur série.

Les bibliothèques : "High_temp.h" et "TM1637Displaay.h" doivent être installé sur la bibliothèque (voir article sur chacun des capteurs)

Dans moniteur série régler : 115 200 baud

 

copier/coller dans arduino : 

 

#include "High_Temp.h"
#include <TM1637Display.h>
#include <EEPROM.h>

HighTemp ht(A0, A1);

#define CLK 2
#define DIO 3
TM1637Display display(CLK, DIO);

const int ledPin = 4;
const float seuilTemp = 60.0;

float offsetCalibration = 0.0;

void setup() {
  Serial.begin(115200);
  ht.begin();

  pinMode(ledPin, OUTPUT);

  display.setBrightness(7);
  display.clear();

  EEPROM.get(0, offsetCalibration);

  if (isnan(offsetCalibration) || offsetCalibration < -20 || offsetCalibration > 20) {
    offsetCalibration = 0.0;
  }

  Serial.println("Thermometre OK");
}

void loop() {

  // ---------------- Calibration ----------------
  if (Serial.available() > 0) {

    String saisie = Serial.readStringUntil('\n');
    saisie.trim();

    float temperatureReelle = saisie.toFloat();
    float temperatureMesuree = ht.getThmc();

    offsetCalibration = temperatureReelle - temperatureMesuree;

    EEPROM.put(0, offsetCalibration);

    Serial.print("Offset = ");
    Serial.println(offsetCalibration, 2);
  }

  // ---------------- Mesure ----------------
  float temperature = ht.getThmc() + offsetCalibration;

  Serial.print("Temp : ");
  Serial.println(temperature, 2);

  digitalWrite(ledPin, temperature > seuilTemp);

  // ---------------- Affichage XX.X ----------------
  int valeur = (int)(temperature * 10); // 25.2 -> 252

  display.showNumberDecEx(
    valeur,
    0b01000000,   // point décimal → XX.X
    true
  );

  delay(1000);
}

 

 

SCRIPT ARDUINO : 

 

 

 

 

 

 

 

Notice installation des croquis pour que les capteurs fonctionnent : 

 

 

 

 

 

 

 

Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article