Bonjour,
J'ai fait un bout de code en récupérant de l'existant sur le web, permettant de mesurer deux tensions A et B et de les afficher sur un afficheur LCD 4L20C , pour ça c'est bon.
Sur une des lignes dispo je voudrais afficher deux statuts: ON ou OFF. ALARM ON ou ALARM OFF.
Ces deux flags changeraient d'état en fonction du niveau de la tension B:
1<B<3. alors ON sinon OFF
5<B<6 alors ALARM ON sinon ALARM OFF
Etant un bleu en prog, je ne sais pas comment intégrer cela dans mon code.
Merci d'avance si quelqu'un pouvait de donner un coup de main.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4); // initialisation de l'afficheur LCD
const int pinA = A0; // broche analogique pour la première tension
const int pinB = A1; // broche analogique pour la deuxième tension
void setup() {
Serial.begin(9600); // initialisation de la communication série
lcd.init(); // initialisation de l'afficheur LCD
lcd.backlight(); // allumage du rétroéclairage
lcd.clear(); // effacement de l'écran
}
void loop() {
// lecture des tensions analogiques
int valA = analogRead(pinA);
int valB = analogRead(pinB);
// conversion des valeurs analogiques en volts
float voltageA = valA * 5.0 / 1023.0;
float voltageB = valB * 5.0 / 1023.0;
// affichage des tensions sur l'afficheur LCD
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Monitoring ");
lcd.setCursor(0,1);
lcd.print(" OFF No ALARM ");
lcd.setCursor(0,2);
lcd.print("Tension Alim: ");
lcd.print(voltageA);
lcd.print(" V");
lcd.setCursor(0,3);
lcd.print("Courant Alim: ");
lcd.print(voltageB);
lcd.print(" A");
delay(1000); // attente d'une seconde avant de répéter la lecture
}
tes conditions sont mal définies.
si B= 2, alors 1<B<3 est VRAI, on c'est ON, mais comme on a aussi 5<B<6 qui est FAUX, c'est ALARM OFF.
si B=5.5, alors 1<B<3 est FAUX, donc on affiche OFF, mais comme 5<B<6 est VRAI, alors on affiche aussi ALARM ON.
Pas clair.
Avant de vouloir coder, réfléchis à exprimer tes conditions de façon plus précise, sans ambiguïté. Une fois cela fait, coder est un beurre.
@kamill lis mon post#2 : si B vaut 5.5, ça affiche "OFF" "ALARM ON" ce qui n'est pas, pensé-je, le but cherché.
Je répète : avant de coder, il faut avoir un organigramme valide.
Merci pour les retours, désolé je ne suis pas un programmeur, je pratique lorsque j'ai un besoin, d'ou mon manque d'expérience.
Merci Kamill je suis parti de ton code ca fonctionne .
Savez vous comment on peut faire un affichage inversé ?
c'est a dire OFF en blanc sur fond bleu (affichage standard), et ON en bleu sur fond blanc ( juste sur ces 3 caractères)
Il y a deux informations différentes qui dépendent de la valeur de B et qui intrinsèquement ne sont pas contradictoires.
Cependant je suis d'accord avec toi, tel que c'est énoncé, c'est un peu curieux et on se demande à quoi ça peut bien correspondre, d'où ma remarque à la fin de mon message. Mais @mirage2000 connait sans doute son besoin.
Pour info, je surveille la tension B sur un ampli qui est déporté (en faite la tension est l'image du courant de l'ampli dans mon cas)
Si celle ci est est < à 1V , j"affiche OFF. (Ici l'ampli est a l'arrêt)
Si celle ci est comprise entre 1 et 4 volts j'affiche ON. (ici l'ampli est en fonctionnement)
Si celle si est > 5V j'affiche ALARME. (ici il ya un probleme , l'ampli est trop chargé)
merci pour votre aide. Ok je voulais juste essayer de mettre en évidence ALARM soit en inversant la couleur soit en le faisant clignoter.
Mais on peut les reprogrammer à la volée si on n'a pas besoin d'afficher plus de 8 caractères différents à un instant donné. C'est un peu rock & roll comme manière de faire mais ça fait le job.