U8glib.h

Bonjour à tous,

C'est un projet pour afficher pour l'instant les impulsions d'une ILS, le Volume total et le débit/h.

J’essaye de faire afficher les résultats avec un écran LCD 128*64.

Lorsque je configure pour afficher dans le moniteur série tous s'affiche correctement.

Mais lors des essais avec l’écran il n'y a que les éléments "V1.00"," Impulsions :" .... (Nombre_d_impulsion * Litre_par_tour, 3) qui s’affiche correctement. Le débit/h et sa variante ne s'affiche pas.

#include <U8glib.h> 

const int  ILS = 2;                // pin pour la mesure des impulsions
int Etat_ILS = 0;                  // état de l'ILS
int Nombre_d_impulsion = 0;        // comptage d'impulsion de l'ILS
int variable_stop = 1;             // variable pour arrêter de compter
float Litre_par_tour = 0.00925926; // litre passer par tour d'ils
unsigned long precedent_millis = 0; // pour garder les milliseconde d'avant
const long interval = 2000;        // interval entre les comptage
float time;                              // Pour calculer le temps
int Stock_d_impulsion = 0;         // pour garder les impulsions d'avant
int Diffence_d_impulsion = 0;      // pour stocker la différence des impulsion


U8GLIB_ST7920_128X64 u8g(13, 11, 12, U8G_PIN_NONE); //pour le lcd

void setup()
{

  pinMode(ILS, INPUT); 
  Serial.begin(9600); 
}

void loop()
{

  Etat_ILS = digitalRead(ILS);                 // lit l'etat de la pin 2
  unsigned long courant_millis = millis();    

  if (Etat_ILS != variable_stop)              // compare la variable  et l'ILS   
  {
    if (Etat_ILS == HIGH)                    //si c'est 1 on compte
    {
      Nombre_d_impulsion++;        
      Stock_d_impulsion++;

      u8g.firstPage();
      do { //pour le lcd
        u8g.setFont(u8g_font_profont11);           //pour le lcd modifier police et taille
        u8g.drawStr( 18, 7, "V1.00");
        u8g.drawStr( 3, 17, " Impulsions :");
        u8g.setPrintPos(85, 17);
        u8g.print(Nombre_d_impulsion, DEC);
        u8g.drawStr( 3, 27, " Volume :");
        u8g.setPrintPos(85, 27);
        u8g.print(Nombre_d_impulsion * Litre_par_tour, 3);

        //u8g.drawStr( 3, 47, "Ligne 4");

      } while ( u8g.nextPage() );    //pour le lcd

      if (courant_millis - precedent_millis >= interval)
         { // si les milliseconde courante - les millis enregistré avant sont sup ou egale  à 2s caluler le debit

          u8g.drawStr( 3, 37, "L/h :");
          u8g.setPrintPos ( 80, 37);
          u8g.print((Stock_d_impulsion - Diffence_d_impulsion) * 30 * 60 * 0.00925926);
          precedent_millis = courant_millis;   // 

          Stock_d_impulsion = Diffence_d_impulsion;
         }
       }
    variable_stop = Etat_ILS;             
 }
}

Si quelqu'un a une idée?

Par avance merci

Je pense que c'est parce que ta condition "if (courant_millis - precedent_millis >= interval)" n'est pas remplie. Essaye de l'enlever pour voir s'il affiche quelque chose...

Sinon, je ne vois rien.

Bonsoir,

Merci de la réponse.

Mais si je test avec le terminal l'info est bien retourné toutes les 2secondes :

const int  ILS = 2;                // pin pour la mesure des impulsions
int Etat_ILS = 0;                  // état de l'ILS
int Nombre_d_impulsion = 0;        // comptage d'impulsion de l'ILS
int variable_stop = 1;             // variable pour arreter de compte si l'ils s'arrete sur l'aimant
float Litre_par_tour = 0.00925926; // litre passer par tour d'ils
unsigned long precedent_millis = 0; // pour garder les milliseconde d'avant
const long interval = 2000;        // interval entre les comptage pour rafraichir
float time;                        // Pour calculer le temps
int Stock_d_impulsion = 0;         // pour garder les impulsions d'avant
int Diffence_d_impulsion = 0;      // pour stocker la difference des impulsion


void setup()
{

 pinMode(ILS, INPUT); //déclaration de la pin 2 en lecture
 Serial.begin(9600); // declarer pour le moniteur serie pour mes tests
}

void loop()
{

 Etat_ILS = digitalRead(ILS);                 // lit l'etat de la pin 2
 unsigned long courant_millis = millis();     //pour calculer le temps

 if (Etat_ILS != variable_stop)              // compare la variable à 1 et l'ILS  si different donc 0 passe ligne dessous
 {
   if (Etat_ILS == HIGH)                    //si c'est 1 on compte
   {
     Nombre_d_impulsion++;        // on rajoute  1 à impulsion
     Stock_d_impulsion++;


     
     if (courant_millis - precedent_millis >= interval)
        { // si les milliseconde courante - les millis enregistré avant sont sup ou egale  à 2s caluler le debit
       
       Serial.print(" L/h :");
       Serial.println((Stock_d_impulsion - Diffence_d_impulsion) * 30 * 60 * 0.00925926);
    
         precedent_millis = courant_millis;   // mettre a jour le compteur des millis pour la prochaine boucle
         Stock_d_impulsion = Diffence_d_impulsion;
                
      }
   }
   variable_stop = Etat_ILS;             //passe la varible_stop à 1 pour arreter de compter
 }
}
 L/h :10.07
 L/h :27.56
 L/h :32.59
 L/h :82.59
 L/h :80.07
 L/h :86.56
 L/h :32.59
 L/h :20.57

Je pense que je ne doit pas bien utilisé la librairie U8glib... je bloque dessus..