#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 7
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
unsigned long previousMillis = 0; // Temps écoulé depuis le dernier calcul
unsigned long startMillis = 0; // Temps de démarrage du compteur
const long interval = 1000; // Intervalle de temps pour le calcul (en millisecondes)
float voltage; // Variable pour stocker la tension simulée
float current; // Variable pour stocker le courant simulé
float power; // Variable pour stocker la puissance instantanée
float energy = 0.0; // Variable pour stocker l'énergie consommée
void setup() {
lcd.begin(16, 2); // Initialisation de l'écran LCD 16x2
Serial.begin(115200); // Initialisation de la communication série
startMillis = millis(); // Enregistrer le temps de démarrage
sensors.begin(); // Initialisation du capteur de température
}
void loop() {
unsigned long currentMillis = millis(); // Temps actuel
float timeDiff = (currentMillis - previousMillis) / 1000.0; // Temps écoulé en secondes depuis le dernier calcul
float elapsedTime = (currentMillis - startMillis) / 1000.0; // Temps total écoulé en secondes depuis le début
if (timeDiff >= interval / 1000.0) {
// Lecture de valeurs simulées de tension et de courant
voltage = analogRead(A0) * (5.0 / 1023.0); // Lecture de la tension simulée
current = analogRead(A1) * (5.0 / 1023.0); // Lecture du courant simulé
// Calcul de la puissance instantanée
power = voltage * current;
// Ajouter la consommation du capteur (supposons 1mA à 5V pour DS18B20)
float sensorPower = 5.0 * 0.001; // Puissance consommée par le capteur en watts
power += sensorPower; // Ajouter la puissance du capteur à la puissance totale
// Calcul de l'énergie consommée
energy += power * (timeDiff / 3600.0); // Convertir le temps en heures pour l'énergie en watt-heure
// Lire la température du capteur
sensors.requestTemperatures();
float temperature = sensors.getTempCByIndex(0);
// Affichage des résultats dans le moniteur série
Serial.print("Puissance instantanee : ");
Serial.print(power);
Serial.println(" W");
Serial.print("Energie consommee : ");
Serial.print(energy);
Serial.println(" Wh");
Serial.print("Temps ecoule : ");
Serial.print(elapsedTime);
Serial.println(" s");
Serial.print("Temperature : ");
Serial.print(temperature);
Serial.println(" C");
Serial.println("");
// Affichage des résultats sur l'écran LCD
lcd.setCursor(0, 0);
lcd.print("Puissance: ");
lcd.print(power);
lcd.print("W");
lcd.setCursor(0, 1);
lcd.print("Energie: ");
lcd.print(energy);
lcd.print("Wh");
// Mise à jour du temps précédent pour le prochain intervalle
previousMillis = currentMillis;
}
delay(100); // Délai pour la stabilité de la boucle
}
Loading
ds18b20
ds18b20