Go Down

Topic: besoin d'aide pour un menu, (Read 2471 times) previous topic - next topic

Dams501

les delay(200) on l aire d avoir régler le soucie de délais du home

mais pour ma température rebel je voie pas
C'est a force d'enfiler les poules que l'on finit par casser des œufs !

Dams501

en faite il désactive bien les température affiche mais si le menu n écrit pas par dessus il les laisse afficher mais ne les actualise pas comme tu dit c juste un clear mais ou ?
C'est a force d'enfiler les poules que l'on finit par casser des œufs !

Dams501

#32
Apr 24, 2019, 07:09 pm Last Edit: Apr 24, 2019, 07:29 pm by Dams501
je me demande si c pas a cause de mon delais sur les sonde ? es que a ton avis l actualisation peut se terminer après le clear se qui expliquerez que le clear impacte pas ?


edit

je confirme c sur que c sa ma sonde s actualise encore 1 pendant que le menu s active se qui explique qu il apparaisse 1 fois et plus après ? ta une idée de comment retarder l affichage ou supprimer la dernière actualisation de mes sonde ?
C'est a force d'enfiler les poules que l'on finit par casser des œufs !

lesept

les delay(200) on l aire d avoir régler le soucie de délais du home
Pour vérifier, tu les mets en commentaire et tu regardes si tu as de nouveau le problème
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Dams501


je confirme c sur que c sa ma sonde s actualise encore 1 pendant que le menu s active se qui explique qu il apparaisse 1 fois et plus après ? ta une idée de comment retarder l affichage ou supprimer la dernière actualisation de mes sonde ?
C'est a force d'enfiler les poules que l'on finit par casser des œufs !

lesept

je confirme c sur que c sa ma sonde s actualise encore 1 pendant que le menu s active se qui explique qu il apparaisse 1 fois et plus après ? ta une idée de comment retarder l affichage ou supprimer la dernière actualisation de mes sonde ?
J'ai du mal à comprendre ce que tu veux dire...
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Dams501

en faite mes sonde s'actualise en continu


ducoups

quand je lance mon menu l affichage des sondes se désactive, clear et écrie le menu


sauf que ma dernière actualisation de met sonde se termine en général après le clear se qui fait qu il écrit une dernière fois met température après le clear et avent le menu


C'est a force d'enfiler les poules que l'on finit par casser des œufs !

lesept

Tu peux ôter ces lignes du setup :
Code: [Select]
  lcd.setCursor(0, 0);
  lcd.print("Temp NID:");;
  lcd.setCursor(0, 1);
  lcd.print("Temp ADC:");
  delay(2000);


Ensuite, modifie Sondes comme suit :
Code: [Select]
void Sondes() {
  if (!afficherMenu) {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Temp NID:");
    lcd.setCursor(0, 1);
    lcd.print("Temp ADC:");    mypr(tc_100(addr1),0);
    mypr(tc_100(addr2),1);
   } else if (digitalRead(HOME) == LOW) { /* Bouton Select */
      afficherMenu = false;
      Tempo = millis() + 750;
   }
}


Pourquoi as-tu déplacé ces lignes de boutons vers Sondes :
Code: [Select]
else if (digitalRead(HOME) == LOW) { /* Bouton Select */
      afficherMenu = false;
      Tempo = millis() + 750;
   }

Je pense qu'il faut les laisser dans boutons, avant le test de SELECT par exemple
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Dams501

#38
Apr 25, 2019, 12:55 am Last Edit: Apr 25, 2019, 12:59 am by Dams501
le code actuel sans le clear dans sonde le home s'affiche bien mais quand je rentre dans le menu les température se r affiche et si je me déplace dans le menu tout est de nouveau normal

Code: [Select]
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#include <OneWire.h>

// DS18S20 Temperature chip i/o
OneWire ds(10);  // on pin 10

byte addr1[8] = {0x28, 0xAA, 0x98, 0x12, 0x3C, 0x14, 0x01, 0xD7};
byte addr2[8] = {0x28, 0xAA, 0xC1, 0x91, 0x3B, 0x14, 0x01, 0x9A};
int SignBit = 0;
int StartCol = 8;

bool afficherMenu = false;
bool temperatureLimite = false;

int ventilo = 6;
int sonde = 7;
int relais = 1;
int Tmin = 20;
int Tmax= 25;
int Hmin = 20;
int Hmax = 25;
int heure = 1;
int minute = 1;

int unsigned Menu = 0;
int unsigned SousMenu = 0;

double Tempo = millis();
double Tempo2 = 0;

int test1 = 0;
int test2 = 0;
int test3 = 0;

int SELECT = A0;
int UP = A1;
int LEFT = A3;
int HOME = A4;



typedef struct {
  String Menu;
}

TypeMenu;
TypeMenu NumMenu[100];

void Initialisation() {
  NumMenu[10] = (TypeMenu) {
    "1. Info General "
  };
  NumMenu[11] = (TypeMenu) {
    "Temp Nid:" +String(Tmin)
  };
  NumMenu[12] = (TypeMenu) {
    "Temp ADC:" +String(Tmax)
  };
  NumMenu[13] = (TypeMenu) {
    "Humidite" +String(Tmax)
  };
  NumMenu[20] = (TypeMenu) {
    "2. Temperature"
  };
  NumMenu[21] = (TypeMenu) {
    "Temp Min " +String(Tmin) + " c"
  };
  NumMenu[22] = (TypeMenu) {
    "Temp Max " +String(Tmax) + " c"
  };
  NumMenu[30] = (TypeMenu) {
    "3. Humidite"
  };
  NumMenu[31] = (TypeMenu) {
    "Humid Min " +String(Hmin) + "%"
  };
  NumMenu[32] = (TypeMenu) {
    "Humid Max " +String(Hmax) + "%"
  };
  NumMenu[40] = (TypeMenu) {
    "4. Heure"
  };
  NumMenu[41] = (TypeMenu) {
    "4.1 Reglage"
  };
  NumMenu[42] = (TypeMenu) {
    "4.2 Reglage heure"
  };
}



void setup() {
  pinMode(ventilo, OUTPUT);
  pinMode(sonde, OUTPUT);
  pinMode(relais, OUTPUT);

  Serial.begin(9600);
  Initialisation();
  lcd.begin(16, 2);
  lcd.clear();

 
  pinMode(SELECT, INPUT_PULLUP);
  pinMode(UP, INPUT_PULLUP);
  pinMode(LEFT, INPUT_PULLUP);
  pinMode(HOME, INPUT_PULLUP);
}



void loop() {
  Sondes();
  Regul();
  humi();
  heurefunc();
  bouton();
}

void bouton() {
  if ( millis() > Tempo ) {
    if (digitalRead(LEFT) == LOW) { /* Bouton LEFT  */
      lcd.clear();
      afficherMenu = true;  // <-- ici
      SousMenu++;
      Tempo = millis() + 250;
      AfficheMenu();
    } else if (digitalRead(UP) == LOW) { /* Bouton Up */
      lcd.clear();
      afficherMenu = true;  // <-- ici
      Menu = Menu + 10;
      Tempo = millis() + 250;
      SousMenu = 0;
      AfficheMenu();
    } else if (digitalRead(HOME) == LOW) { /* Bouton Select */
      afficherMenu = false;
      Tempo = millis() + 750;
    } else if (digitalRead(SELECT) == LOW) { /* Bouton Select */
      lcd.clear();
      afficherMenu = true;  // <-- et ici
      Tempo = millis() + 750;
      switch (Menu + SousMenu) {
        
      case 21 :
          if(Tmin <= 29){
            Tmin = Tmin + 1;
          }
          else {
            Tmin = 5;
          }
          if(Tmin >= Tmax) {
            Tmax = Tmin + 1;
            Serial.print("Tmax");
            Serial.println(Tmax);
            NumMenu[22] = (TypeMenu) {
            "Temp Max " +String(Tmax) + " c"
          };
          }
          NumMenu[21] = (TypeMenu) {
          "Temp Min " +String(Tmin) + " c"
          };
          Serial.print("Tmin");
          Serial.println(Tmin);
          break;
    
      case 22 :
          if ((Tmax > Tmin)&&(Tmax <= 30)){
            Tmax = Tmax + 1;
          }
          else {
            Tmax = Tmin + 1;
            NumMenu[21] = (TypeMenu) {
            "Temp Min " +String(Tmin) + " c"
          };
          }
          NumMenu[22] = (TypeMenu) {
          "Temp Max " +String(Tmax) + " c"
          };
          Serial.print("Tmax");
          Serial.println(Tmax);
          break;
        
      case 31 :
          if ((Hmax > Hmin)&&(Hmin <= 99)){
            Hmin = Hmin + 1;
          }
          else {
            Hmin = 5;
          }
          if(Hmin >= Hmax) {
            Hmax = Hmin + 5;
            NumMenu[32] = (TypeMenu) {
            "Humid Max " +String(Hmax) + " %"
            };
            Serial.print("Hmax");
            Serial.println(Hmax);
          }
          NumMenu[31] = (TypeMenu) {
          "Humid Min " +String(Hmin) + " %"
          };
          Serial.print("Hmin");
          Serial.println(Hmin);
          break;

      case 32 :
          if ((Hmax > Hmin)&&(Hmax <= 99)){
            Hmax = Hmax + 1;
          }
          else {
            Hmax = Hmin + 1;
            NumMenu[31] = (TypeMenu) {
            "Humid Min " +String(Hmin) + " %"
            };
          }
          NumMenu[32] = (TypeMenu) {
          "Humid Max " +String(Hmax) + " %"
          };
          Serial.print("Hmax");
          Serial.println(Hmax);
          break;

      case 41 :
          ;
      case 42 :
          ;
      }
      AfficheMenu();
    }
  }
}

void AfficheMenu() {
  if (Menu == 0 ) {
    Menu = 40;
  }
  if (Menu == 50 ) {
    Menu = 10;
  }
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(NumMenu[Menu].Menu);
  lcd.setCursor(0, 1);
  if ( SousMenu < 0 ) {
    SousMenu = 0;
  }
  if (NumMenu[Menu + SousMenu].Menu == "") {
    SousMenu = 0;
  }
  if (Menu + SousMenu > Menu) {
    lcd.print(NumMenu[Menu + SousMenu].Menu);
  }
}

void Regul() {
    if (test1 == 1) {
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Temperature Mini");
      lcd.setCursor(0, 1);
      lcd.print(Hmin);
    }
}

void humi() {
    if (test2 > 0) {
    if ((digitalRead(test2)) == HIGH) {
      Serial.print("action on test2");
    }
    if ((digitalRead(test2)) == LOW) {
      Serial.print("action off test2");
    }
  }
}

void heurefunc() {
    if (test3 > 0) {
    if ((digitalRead(test3)) == HIGH) {
      Serial.print("action on test3");
    }
    if ((digitalRead(test3)) == LOW) {
      Serial.print("action off test3");
    }
  }
}



// sonde temperature




int tc_100(byte* addr){
  int HighByte, LowByte, TReading;
  byte data[12];
  byte i;

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);         // start conversion, with parasite power on at the end

  unsigned long chrono = millis();
    while (millis()-chrono < 1000ul) {
    // lecture des boutons et traitement si menu
    bouton();
    }

  ds.reset();
  ds.select(addr);  
  ds.write(0xBE);         // Read Scratchpad

  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
  }

  LowByte = data[0];
  HighByte = data[1];
  TReading = (HighByte << 8) + LowByte;
  SignBit = TReading & 0x8000;  // test most sig bit
  if (SignBit) // negative
  {
    TReading = (TReading ^ 0xffff) + 1; // 2's comp
  }
  return (6 * TReading) + TReading / 4;    // multiply by (100 * 0.0625) or 6.25
}

void mypr(int Tc_100, int line) {
  int Whole, Fract;

  Whole = Tc_100 / 100;  // separate off the whole and fractional portions
  Fract = Tc_100 % 100;

  if (SignBit) // If its negative
  {
     lcd.setCursor(StartCol,line);
     lcd.print("-");
  }
  lcd.setCursor(StartCol+1,line);
  lcd.print(Whole);
  lcd.print(".");
  if (Fract < 10)
  {
     lcd.print("0");
  }
  lcd.print(Fract);
  lcd.print("C");
}

void Sondes() {
  if (!afficherMenu) {
    lcd.setCursor(0, 0);
    lcd.print("Temp NID:");
    lcd.setCursor(0, 1);
    lcd.print("Temp ADC:");
    mypr(tc_100(addr1),0);
    mypr(tc_100(addr2),1);
      }
}








avec le lcd.clear() je n 'est que la température du haut qui affiche et elle clignote

Code: [Select]
void Sondes() {
  if (!afficherMenu) {
    lcd.clear()
    lcd.setCursor(0, 0);
    lcd.print("Temp NID:");
    lcd.setCursor(0, 1);
    lcd.print("Temp ADC:");
    mypr(tc_100(addr1),0);
    mypr(tc_100(addr2),1);
      }
}


C'est a force d'enfiler les poules que l'on finit par casser des œufs !

lesept

Essaye d'ajouter
Code: [Select]
if (!afficherMenu) return;
après
Code: [Select]
void AfficheMenu() {

Pour la température qui clignote, je pense que c'est dû au lcd.clear dans Sondes. Comme cette fonction est appelée très souvent, elle efface l'écran et affiche sans cesse. De plus il y a une temporisation d'une seconde à chaque lecture.

Il faut modifier la lecture des sondes pour les lire toutes les deux en même temps. Mais je ne comprends pas comment tu peux avoir 2 sondes alors que tu n'en déclares qu'une seule :
Code: [Select]
// DS18S20 Temperature chip i/o
OneWire ds(10);  // on pin 10

Où est branchée l'autre ?
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Dams501

je teste sa pour mes sonde elle sont sur le même pin car elle on chacune leur propre id

je c pas si j ai le droit de partager le lien du tuto ici car il ne vient pas de se site ?

 
C'est a force d'enfiler les poules que l'on finit par casser des œufs !

Dams501

n hésite pas a me faire faire des modif de code si je peux apprendre d autre truc au passage et en comprendre d autre pas de soucie,
C'est a force d'enfiler les poules que l'on finit par casser des œufs !

lesept

Est-il possible de connecter les 2 sondes sur 2 pins différentes ?
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Dams501

#43
Apr 25, 2019, 09:39 am Last Edit: Apr 25, 2019, 09:43 am by Dams501
je pense pour les sonde je v voir et jte redit il faut que je test je v voir


sinon j ai mis des print un peux partout et voila se qui se passe dans la console quand j affiche mon menu

Code: [Select]
2081
2075
2081
2075
2081
2075
afficherMenu = true
clear du lcd
Menu afficher
2081
2081




le code avec les Print

Code: [Select]
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#include <OneWire.h>

// DS18S20 Temperature chip i/o
OneWire ds(10);  // on pin 10

byte addr1[8] = {0x28, 0xAA, 0x98, 0x12, 0x3C, 0x14, 0x01, 0xD7};
byte addr2[8] = {0x28, 0xAA, 0xC1, 0x91, 0x3B, 0x14, 0x01, 0x9A};
int SignBit = 0;
int StartCol = 8;

bool afficherMenu = false;
bool temperatureLimite = false;

int ventilo = 6;
int sonde = 7;
int relais = 1;
int Tmin = 20;
int Tmax= 25;
int Hmin = 20;
int Hmax = 25;
int heure = 1;
int minute = 1;

int unsigned Menu = 0;
int unsigned SousMenu = 0;

double Tempo = millis();
double Tempo2 = 0;

int test1 = 0;
int test2 = 0;
int test3 = 0;

int SELECT = A0;
int UP = A1;
int LEFT = A3;
int HOME = A4;



typedef struct {
  String Menu;
}

TypeMenu;
TypeMenu NumMenu[100];

void Initialisation() {
  NumMenu[10] = (TypeMenu) {
    "1. Info General "
  };
  NumMenu[11] = (TypeMenu) {
    "Temp Nid:" +String(Tmin)
  };
  NumMenu[12] = (TypeMenu) {
    "Temp ADC:" +String(Tmax)
  };
  NumMenu[13] = (TypeMenu) {
    "Humidite" +String(Tmax)
  };
  NumMenu[20] = (TypeMenu) {
    "2. Temperature"
  };
  NumMenu[21] = (TypeMenu) {
    "Temp Min " +String(Tmin) + " c"
  };
  NumMenu[22] = (TypeMenu) {
    "Temp Max " +String(Tmax) + " c"
  };
  NumMenu[30] = (TypeMenu) {
    "3. Humidite"
  };
  NumMenu[31] = (TypeMenu) {
    "Humid Min " +String(Hmin) + "%"
  };
  NumMenu[32] = (TypeMenu) {
    "Humid Max " +String(Hmax) + "%"
  };
  NumMenu[40] = (TypeMenu) {
    "4. Heure"
  };
  NumMenu[41] = (TypeMenu) {
    "4.1 Reglage"
  };
  NumMenu[42] = (TypeMenu) {
    "4.2 Reglage heure"
  };
}



void setup() {
  pinMode(ventilo, OUTPUT);
  pinMode(sonde, OUTPUT);
  pinMode(relais, OUTPUT);

  Serial.begin(9600);
  Initialisation();
  lcd.begin(16, 2);
  lcd.clear();

 
  pinMode(SELECT, INPUT_PULLUP);
  pinMode(UP, INPUT_PULLUP);
  pinMode(LEFT, INPUT_PULLUP);
  pinMode(HOME, INPUT_PULLUP);
}



void loop() {
  Sondes();
  Regul();
  humi();
  heurefunc();
  bouton();
}

void bouton() {
  if ( millis() > Tempo ) {
    if (digitalRead(LEFT) == LOW) { /* Bouton LEFT  */
      afficherMenu = true;  // <-- ici
      Serial.println("afficherMenu = true");
      SousMenu++;
      Tempo = millis() + 250;
      lcd.clear();
      Serial.println("clear du lcd");
      AfficheMenu();
      Serial.println("Menu afficher");
    } else if (digitalRead(UP) == LOW) { /* Bouton Up */
      afficherMenu = true;  // <-- ici
      Serial.println("afficherMenu = true");
      Menu = Menu + 10;
      Tempo = millis() + 250;
      SousMenu = 0;
      lcd.clear();
      Serial.println("clear du lcd");
      AfficheMenu();
      Serial.println("Menu afficher");
    } else if (digitalRead(HOME) == LOW) { /* Bouton Select */
      afficherMenu = false;
      Tempo = millis() + 750;
    } else if (digitalRead(SELECT) == LOW) { /* Bouton Select */
      afficherMenu = true;  // <-- et ici
      Tempo = millis() + 750;
      lcd.clear();
      switch (Menu + SousMenu) {
        
      case 21 :
          if(Tmin <= 29){
            Tmin = Tmin + 1;
          }
          else {
            Tmin = 5;
          }
          if(Tmin >= Tmax) {
            Tmax = Tmin + 1;
            Serial.print("Tmax");
            Serial.println(Tmax);
            NumMenu[22] = (TypeMenu) {
            "Temp Max " +String(Tmax) + " c"
          };
          }
          NumMenu[21] = (TypeMenu) {
          "Temp Min " +String(Tmin) + " c"
          };
          Serial.print("Tmin");
          Serial.println(Tmin);
          break;
    
      case 22 :
          if ((Tmax > Tmin)&&(Tmax <= 30)){
            Tmax = Tmax + 1;
          }
          else {
            Tmax = Tmin + 1;
            NumMenu[21] = (TypeMenu) {
            "Temp Min " +String(Tmin) + " c"
          };
          }
          NumMenu[22] = (TypeMenu) {
          "Temp Max " +String(Tmax) + " c"
          };
          Serial.print("Tmax");
          Serial.println(Tmax);
          break;
        
      case 31 :
          if ((Hmax > Hmin)&&(Hmin <= 99)){
            Hmin = Hmin + 1;
          }
          else {
            Hmin = 5;
          }
          if(Hmin >= Hmax) {
            Hmax = Hmin + 5;
            NumMenu[32] = (TypeMenu) {
            "Humid Max " +String(Hmax) + " %"
            };
            Serial.print("Hmax");
            Serial.println(Hmax);
          }
          NumMenu[31] = (TypeMenu) {
          "Humid Min " +String(Hmin) + " %"
          };
          Serial.print("Hmin");
          Serial.println(Hmin);
          break;

      case 32 :
          if ((Hmax > Hmin)&&(Hmax <= 99)){
            Hmax = Hmax + 1;
          }
          else {
            Hmax = Hmin + 1;
            NumMenu[31] = (TypeMenu) {
            "Humid Min " +String(Hmin) + " %"
            };
          }
          NumMenu[32] = (TypeMenu) {
          "Humid Max " +String(Hmax) + " %"
          };
          Serial.print("Hmax");
          Serial.println(Hmax);
          break;

      case 41 :
          ;
      case 42 :
          ;
      }
      AfficheMenu();
    }
  }
}

void AfficheMenu() {
  if (!afficherMenu) return;
  if (Menu == 0 ) {
    Menu = 40;
  }
  if (Menu == 50 ) {
    Menu = 10;
  }
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(NumMenu[Menu].Menu);
  lcd.setCursor(0, 1);
  if ( SousMenu < 0 ) {
    SousMenu = 0;
  }
  if (NumMenu[Menu + SousMenu].Menu == "") {
    SousMenu = 0;
  }
  if (Menu + SousMenu > Menu) {
    lcd.print(NumMenu[Menu + SousMenu].Menu);
  }
}

void Regul() {
    if (test1 == 1) {
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Temperature Mini");
      lcd.setCursor(0, 1);
      lcd.print(Hmin);
    }
}

void humi() {
    if (test2 > 0) {
    if ((digitalRead(test2)) == HIGH) {
      Serial.print("action on test2");
    }
    if ((digitalRead(test2)) == LOW) {
      Serial.print("action off test2");
    }
  }
}

void heurefunc() {
    if (test3 > 0) {
    if ((digitalRead(test3)) == HIGH) {
      Serial.print("action on test3");
    }
    if ((digitalRead(test3)) == LOW) {
      Serial.print("action off test3");
    }
  }
}



// sonde temperature




int tc_100(byte* addr){
  int HighByte, LowByte, TReading;
  byte data[12];
  byte i;

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);         // start conversion, with parasite power on at the end

  unsigned long chrono = millis();
    while (millis()-chrono < 1000ul) {
    // lecture des boutons et traitement si menu
    bouton();
    }

  ds.reset();
  ds.select(addr);  
  ds.write(0xBE);         // Read Scratchpad

  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
  }

  LowByte = data[0];
  HighByte = data[1];
  TReading = (HighByte << 8) + LowByte;
  SignBit = TReading & 0x8000;  // test most sig bit
  if (SignBit) // negative
  {
    TReading = (TReading ^ 0xffff) + 1; // 2's comp
  }
  return (6 * TReading) + TReading / 4;    // multiply by (100 * 0.0625) or 6.25
}

void mypr(int Tc_100, int line) {
  int Whole, Fract;

  Whole = Tc_100 / 100;  // separate off the whole and fractional portions
  Fract = Tc_100 % 100;

  if (SignBit) // If its negative
  {
     lcd.setCursor(StartCol,line);
     lcd.print("-");
  }
  lcd.setCursor(StartCol+1,line);
  lcd.print(Whole);
  lcd.print(".");
  if (Fract < 10)
  {
     lcd.print("0");
  }
  lcd.print(Fract);
  lcd.print("C");
}

void Sondes() {
  if (!afficherMenu) {
    lcd.setCursor(0, 0);
    lcd.print("Temp NID:");
    lcd.setCursor(0, 1);
    lcd.print("Temp ADC:");
    mypr(tc_100(addr1),0);
    mypr(tc_100(addr2),1);
    Serial.println(tc_100(addr1));
    Serial.println(tc_100(addr2));
      }
}



un autre test dans ma console

Code: [Select]
sonde 1 = 2081
sonde 2 = 2081
sonde 1 = 2081
sonde 2 = 2081
sonde 1 = 2081
sonde 2 = 2081
sonde 1 = afficherMenu = true
clear du lcd
Menu afficher
2081
sonde 2 = 2081


C'est a force d'enfiler les poules que l'on finit par casser des œufs !

lesept

Ici
Code: [Select]
    mypr(tc_100(addr1),0);
    mypr(tc_100(addr2),1);
    Serial.println(tc_100(addr1));
    Serial.println(tc_100(addr2));

chaque lecture prend 1 seconde et tu en fais 4 dont 2 uniquement pour afficher les valeurs. Fais plutôt :
Code: [Select]
    int temp1 = tc_100(addr1);
    int temp2 = tc_100(addr2);
    mypr(temp1,0);
    mypr(temp2,1);
    Serial.println(temp1);
    Serial.println(temp2);


Si on peut brancher les 2 sondes sur 2 pins différentes, alors on pourra déclarer 2 instances différentes avec 2 noms différents. On fera alors la lecture en parallèle et on aura juste besoin d'attendre 1 seconde pour faire les 2 lectures. ça gagnera un peu en rapidité.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Go Up