Bonjour,

J'ai un soucis avec mes conditions if/else dans ma carte arduino (est-ce le bon forum ?)

Le but de mon programme est de détecter la variations de résistance d'un jauge de contrainte et à l'aide d'un pont de Wheatstone et d'amplis OP on est censé récupérer une tension de 0 a 3.5V dans la carte Arduino. On défini des limites et on allume une led verte,jaune ou rouge en fonction de cette tension.
Mon problème est que pour une tension devant allumer la led verte c'est la led orange qui s'allume (oui j'ai vérifié les pins et les branchements...)

Si quelqu'un peut m'aider se serait avec plaisir.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
// ON DEFINI LES PIN :
 
int Tension = A5;
int green = 2;
int orange = 4;
int red = 7;
 
//#define Tension A5
//#define green 2
//#define orange 4
//#define red 7
 
// VALEUR SORTIE DU CAN EN BITS :
int valeur;
 
// VALEUR CALCULEE EN VOLT A L'ENTREE DU CAN :
float volt;
 
// VALEURS LIMITES /
const int rpe = 0.615;
const int re = 1.235;
 
// ATTENTE :
const int wait = 500;
 
 
void setup() {
 
//INITIALISATION DES PIN :
Serial.begin(9600);
pinMode (Tension, INPUT);
 
pinMode (green, OUTPUT);
pinMode (red, OUTPUT);
pinMode (orange, OUTPUT);
}
 
 
void loop() {
            // on convertit en nombre binaire la tension lue
      valeur = analogRead(Tension);
 
            // on traduit la valeur brute en tension (produit en croix)
      volt = valeur * 5.0 / 1023;
 
//Si volt plus grand que voulu, on allume une LED :
 
        //    LED VERTE :
 if(volt <= rpe){
  digitalWrite(green,HIGH);
}
 else {
  digitalWrite(green,LOW);
}
 
  //    LED JAUNE :
 if(volt >= rpe and volt <= re){
  digitalWrite(orange,HIGH);
}
 else {
  digitalWrite(orange,LOW);
}
 
  //    LED ROUGE :
 if(volt >= re){
   digitalWrite(red,HIGH);
}
 else {
   digitalWrite(red,LOW);
}
 
 
            // on affiche la tension calculée
      Serial.print("volt= ");
      Serial.print(volt,2);
      Serial.println(" V");
 
           // on saute une ligne entre deux affichages
      Serial.println();
      delay(wait);
 
            // on affiche la valeur lue sur la liaison série
 
      Serial.print("valeur en bits= ");
      Serial.print(valeur);
      Serial.println(" /1023");
 
  //          // on saute une ligne entre deux affichages
  //    Serial.println( );
  //    delay(wait);
}