Aide pour programmation conditions et affichage

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.

Bonjour,

Ca donne quelque chose comme ça

  lcd.setCursor(10, 0);   // modifier pur mettre la bonne valeur
  if (voltageB>1 && voltageB<3)
    lcd.print("ON ");  
  else
    lcd.print("OFF");

  lcd.setCursor(10, 1);   // modifier pur mettre la bonne valeur
  if (voltageB>5 && voltageB<6)
    lcd.print("ALARM ON ");  
  else
    lcd.print("ALARM OFF");

Tu es sur de tes conditions? car elles paraissent un peu bizarres.

@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)

Hello @biggil

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.

Je ne pense pas qu'il y ait moyen de faire un affichage inversé, à part en créant des caractères utilisateur mais on est limité à 8 caractères.

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.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.