Problème code Arduino

a marqué ce sujet comme résolu.

Bonjour à tous, alors voilà j'ai un petit soucis avec l'un de mes codes (tout est expliqué à la suite):

Voici le premier programme qui fonctionne et qui donne le débit instantanné:

 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
int opto= 13;
int etat = 0;
int ancien_etat = 0;
double chrono = 0; 
long chrono_depart = 0; 
long duree_test = 15000;
int nb_chgt = 0;
double vitesse;
double nb_litre;
int affiche = 1;


void setup () {

  Serial.begin (9600);

  pinMode(opto,INPUT);
  Serial.println("Veuillez patienter 15 secondes.");
  Serial.println("");


}

int fonction()
{
 chrono_depart = millis(); 
 return chrono_depart;
}

void loop() {


  etat = digitalRead(opto);

  chrono = millis ();


  if(affiche == 1)
  {

  if (chrono - chrono_depart < duree_test) {


  if (etat != ancien_etat) {


      nb_chgt = nb_chgt + 1 ;

      ancien_etat = etat;


     } 
  } 
  else {

  if (affiche == 1) {

  vitesse = nb_chgt * 0.4;
  chrono =  chrono / 15000;
  nb_litre = vitesse * chrono * 0.1 /4;

   Serial.print("Vitesse: ");
   Serial.print(vitesse);
   Serial.print("tours/min.");
   Serial.println("");
   Serial.print("Votre consommation d'eau instantannee est de : ");
   Serial.print(nb_litre);
   Serial.println(" litres d'eau.");
   Serial.println("");

   affiche = 0;
  }

  }

}
}

Et ci-dessous voila le code dans son état actuel (peu avancé certes):

 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
int opto= 13;
int etat = 0;
int ancien_etat = 0;
double chrono = 0; 
long chrono_depart = 0; 
long duree_test = 15000;
int nb_chgt = 0;
double vitesse;
double nb_litre;
char affiche = 0;
int cardispo = 0;
int debut = 0;
char carlu = 0;

void setup () 
{

  Serial.begin (9600); 
  pinMode(opto,INPUT);

}

int fonction()
{
 chrono_depart = millis(); 
 return chrono_depart;
}

void loop() 
{

  if(carlu == 0)
    {

    Serial.println("Voulez-vous connaitre votre consommation d'eau instantannee?");
    Serial.println("Saisissez 1 pour OUI ou 0 pour NON");
    Serial.println("");
    cardispo = Serial.available();

      while(cardispo > 0)
        {
        carlu = Serial.read();
        cardispo = Serial.available();
        }

    }


  else if(1)
  {
  etat = digitalRead(opto);
  chrono = millis ();
  int fonction ();
  }

  else if (carlu > 0)
    {
    Serial.println("Veuillez patienter 15 secondes.");
    Serial.println("");

      if (chrono - chrono_depart < duree_test) 
      {

        if (etat != ancien_etat)
        {
        nb_chgt = nb_chgt + 1 ;
        ancien_etat = etat;     
        } 
      }
    } 

  else 
  {

    if (affiche == 1) 
    {
    vitesse = nb_chgt * 0.4;
    chrono =  chrono / 15000;
    nb_litre = vitesse * chrono * 0.1 /4;

    Serial.print("Vitesse: ");
    Serial.print(vitesse);
    Serial.print("tours/min.");
    Serial.println("");
    Serial.print("Votre consommation d'eau instantannee est de : ");
    Serial.print(nb_litre);
    Serial.println(" litres d'eau.");
    Serial.println("");

    affiche = 2;
    }

  }
}

Le soucis sur ce dernier code (non fini sur la fin, car le début du code ne fonctionne pas) est que lorsqu'on lance le moniteur série le programme ne prends pas en compte la saisie de l'utilisateur et boucle… Un peu gênant quoi… Si quelqu'un aurait une solution à ce premier soucis je vous prie de m'en faire part. Merci bien.

+0 -0

Normalement, ton programme affiche

Voulez-vous connaitre votre consommation d'eau instantannee? Saisissez 1 pour OUI ou 0 pour NON

En boucle jusqu'à ce que tu écrives quelque chose. A partir de ce moment, il ne se passe plus rien.

C'est bien ce qui se passe ?

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte