1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| #include <LiquidCrystal_I2C.h>
// Initialisation de l'affichage LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
int pinPuissanceDirecte = A5; // Entrée analogique pour la puissance directe
int pinPuissanceReflechie = A4; // Entrée analogique pour la puissance réfléchie
float maxPuissance = 0.0; // Puissance maximale en watts
float maxTension = 5.0; // Tension maximale du signal analogique
int resolution = 1023; // Résolution de l'ADC
float somme_Puissance = 0.0;
float Max = 0.9;
float min = 0.1;
// Variables
float puissanceDirecte = 0.0; // Puissance directe mesurée
float puissanceReflechie = 0.0; // Puissance réfléchie mesurée
bool entre_en_lecture = true; // Variable pour contrôler la lecture
void setup()
{
lcd.init();
lcd.backlight();
lcd.clear();
Serial.begin(9600); // Initialisation de la communication série pour le débogage
}
void loop()
{
if (entre_en_lecture) { // Si Mode manuel ou Auto
// Lecture des valeurs analogiques
int lectureDirecte = analogRead(pinPuissanceDirecte);
int lectureReflechie = analogRead(pinPuissanceReflechie);
// Calcul de la puissance directe et réfléchie
puissanceDirecte = (lectureDirecte * maxTension / resolution) * (maxPuissance / maxTension) * Max;
puissanceReflechie = (lectureReflechie * maxTension / resolution) * (maxPuissance / maxTension) * min;
// Affichage des valeurs sur l'écran LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("P Dir: ");
lcd.print(puissanceDirecte);
lcd.setCursor(0, 1);
lcd.print("P Ref: ");
lcd.print(puissanceReflechie);
// Affichage des valeurs sur le moniteur série pour le débogage
Serial.print("Puissance Directe: ");
Serial.println(puissanceDirecte);
Serial.print("Puissance Reflechie: ");
Serial.println(puissanceReflechie);
}
delay(1000); // Attente d'une seconde avant la prochaine lecture
} |