Hi everyone, I made a program which is supposed to display on the 4 digits 7 segment the number I wrote in my variable "i". Of course it does not work and I do not understand why. I tested the conections on my arduino with other programs and there is no problem. Thank you for your help !
(I used "u" for units, "d" for tens, "c" for hundreds and "m" for thousands)
const int A = 2;
const int B = 3;
const int C = 4;
const int D = 5;
const int E = 6;
const int F = 7;
const int G = 8;
const int H = 9;
const int D1 = 10;
const int D2 = 11;
const int D3 = 12;
const int D4 = 13;
int i = 99;
char u;
char d;
char c;
char m;
void setup() {
Serial.begin(9600);
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
pinMode(D4, OUTPUT);
digitalWrite(D1, HIGH);
digitalWrite(D2, HIGH);
digitalWrite(D3, HIGH);
digitalWrite(D4, HIGH);
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(H, OUTPUT);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(H, LOW);
}
void N0(void) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
}
void N1(void) {
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
}
void N2(void) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
}
void N3(void) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
}
void N4(void) {
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void N5(void) {
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void N6(void) {
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void N7(void) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
}
void N8(void) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void N9(void) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void lireU(void) {
digitalWrite(D1, LOW);
if (u == 0) {
N0();
}
if (u == 1) {
N1();
}
if (u == 2) {
N2();
}
if (u == 3) {
N3();
}
if (u == 4) {
N4();
}
if (u == 5) {
N5();
}
if (u == 6) {
N6();
}
if (u == 7) {
N7();
}
if (u == 8) {
N8();
}
if (u == 9) {
N9();
}
}
void lireD(void) {
digitalWrite(D2, LOW);
if (d == 0) {
N0();
}
if (d == 1) {
N1();
}
if (d == 2) {
N2();
}
if (d == 3) {
N3();
}
if (d == 4) {
N4();
}
if (d == 5) {
N5();
}
if (d == 6) {
N6();
}
if (d == 7) {
N7();
}
if (d == 8) {
N8();
}
if (d == 9) {
N9();
}
}
void lireC(void) {
digitalWrite(D3, LOW);
if (c == 0) {
N0();
}
if (c == 1) {
N1();
}
if (c == 2) {
N2();
}
if (c == 3) {
N3();
}
if (c == 4) {
N4();
}
if (c == 5) {
N5();
}
if (c == 6) {
N6();
}
if (c == 7) {
N7();
}
if (c == 8) {
N8();
}
if (c == 9) {
N9();
}
}
void lireM(void) {
digitalWrite(D4, LOW);
if (m == 0) {
N0();
}
if (m == 1) {
N1();
}
if (m == 2) {
N2();
}
if (m == 3) {
N3();
}
if (m == 4) {
N4();
}
if (m == 5) {
N5();
}
if (m == 6) {
N6();
}
if (m == 7) {
N7();
}
if (m == 8) {
N8();
}
if (m == 9) {
N9();
}
}
void loop() {
if (floor(i / 1000) == 0) {
digitalWrite(D4, HIGH);
}
if (floor(i / 100) == 0) {
digitalWrite(D4, HIGH);
digitalWrite(D3, HIGH);
}
if (floor(i / 10) == 0) {
digitalWrite(D4, HIGH);
digitalWrite(D3, HIGH);
digitalWrite(D2, HIGH);
}
if (i < 10) {
i = u;
lireU();
}
if ((i > 9) && (i < 100)) {
int X = i / 10;
d = floor(X);
u = X - d;
lireU();
lireD();
}
if ((i > 99) && (i < 1000)) {
int X = i / 10;
int y = floor(X);
u = X - y;
int Z = y / 10;
c = floor(Z);
d = Z - c;
}
}