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
//74HC595
 
int dataPin = 2;
int latchPin = 3;
int clockPin = 4;
 
//Alimentation anodes
int dig4 = 8;
int dig3 = 7;
int dig2 = 6;
int dig1 = 5;
 
 
//Chiffres 
byte dec_digits[] = {0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,0b01101101,0b01111101,0b00000111,0b01111111,0b01101111};
 
 
//Variables correspondant à chaque afficheurs
int var1;
int var2;
int var3;
int var4;
 
 
void setup() {
 
Serial.begin(9600);
 
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
 
pinMode(dig1, OUTPUT);
pinMode(dig2, OUTPUT);
pinMode(dig3, OUTPUT);
pinMode(dig4, OUTPUT);
}
 
void loop() {
 
{
 
  //Chiffres à afficher
 
 var1 = 4
 var2 = 5;
 var3 = 6;
 var4 = 7;
 
//Afficheur de droite
digitalWrite(latchPin, HIGH);
shiftOut(dataPin, clockPin, dec_digits[var1], MSBFIRST);
digitalWrite(latchPin, LOW);
 
digitalWrite(dig1, 1);
delay(1);
digitalWrite(dig1, 0);
 
 
//Dizaine
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, dec_digits[var2]);
digitalWrite(latchPin, HIGH);
 
digitalWrite(dig2, 1);
delay(1);
digitalWrite(dig2, 0);
 
//Centaine
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, dec_digits[var3]);
digitalWrite(latchPin, HIGH);
 
digitalWrite(dig3, 1);
delay(1);
digitalWrite(dig3, 0);
 
//Millier
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, dec_digits[var4]);
digitalWrite(latchPin, HIGH);
 
digitalWrite(dig4, 1);
delay(1);
digitalWrite(dig4, 0);
 
}
Bonjour à tous,

Je souhaite afficher un nombre sur un afficheur 7 segments à 4 chiffres. Le souci, c'est qu'avec le code ci-dessus il m'affiche en continue "0"...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
byte dec_digits[] = {0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,0b01101101,0b01111101,0b00000111,0b01111111,0b01101111};
Si par exemple je conserve entre les crochets "0b00000110" qui correspond à 1 et que j'efface le reste, il va m'afficher "1".

Si je laisse le tout, il va lire "0b00111111", qui correspond à "0", mais pas le reste.

Si j'écris "var1 = 4", il ne m'affichera pas le "4". Il conservera le "0".

Je comprends pas. Savez-vous d'où vient l'erreur dans mon code ?