I have an Issu whit the folowing schematics and code for it. What i have found on this forum the schematics its good or "I think it's good."
the original code it's the folowing.
int clockPin[] = {7,10,13};
int latchPin[] = {6,9,12};
int dataPin[] = {5,8,11};
byte digits[] = {B00001100, //0
B10111101, //1
B01101000, //2
B00111000, //3
B10011001, //4
B00011010, //5
B00001010, //6
B10111100, //7
B00001000, //8
B00011000 //9
};
int digit1, digit2, digit3, digit4;
void setup() {
pinMode(clockPin[0], OUTPUT);
pinMode(latchPin[0], OUTPUT);
pinMode(dataPin[0], OUTPUT);
pinMode(clockPin[1], OUTPUT);
pinMode(latchPin[1], OUTPUT);
pinMode(dataPin[1], OUTPUT);
pinMode(clockPin[2], OUTPUT);
pinMode(latchPin[2], OUTPUT);
pinMode(dataPin[2], OUTPUT);
}
void loop() {
showNumber(756,0);
showNumber(74,1);
}
void showNumber (int num, int disp) {
digit4 = num % 10;
digit3 = (num / 10) % 10;
digit2 = (num / 100) % 10;
digit1 = (num / 1000) % 10;
digitalWrite(latchPin[disp], LOW);
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, B00001000); // X X X NUM
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, digits[digit4]);
digitalWrite(latchPin[disp], HIGH);
delay(1);
digitalWrite(latchPin[disp], LOW);
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, B00000100); // X X NUM X
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, digits[digit3]);
digitalWrite(latchPin[disp], HIGH);
delay(1);
digitalWrite(latchPin[disp], LOW);
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, B00000010); // X NUM X X
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, digits[digit2]);
digitalWrite(latchPin[disp], HIGH);
delay(1);
digitalWrite(latchPin[disp], LOW);
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, B00000001); // NUM X X X
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, digits[digit1]);
digitalWrite(latchPin[disp], HIGH);
delay(1);
}
But so dosen't work for me. The binari code for the numbers 1.2.3.4.5.6.7.8.9. was for me wrong. And the digits 1-4 on the original code have by Me not working corentli. so hawe I modifide the code and so working it for me at the moment but i think it's not the correkt way to work normali the code. So I don't no what it's wrong ore waht can I do that it's working corektly. My code currently it's this wath for mMe currently work.
int clockPin[] = {7};
int latchPin[] = {6};
int dataPin[] = {5};
byte digits[] = {
B11111011, // 0
B01000010, // 1
B10010111, // 2
B11001111, // 3
B01101110, // 4
B11101101, // 5
B11111101, // 6
B01001011, // 7
B11111111, // 8
B11101111 // 9
};
int digit0, digit1, digit2, digit3, digit4, digit5, digit6,digit7, digit8, digit9;
void setup() {
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
}
void loop() {
showNumber(9990,0);
showNumber(1,0);
delay(1000); // Delay for 1 second
}
void showNumber (int num, int disp) {
digit1 = (num / 55) % 10;
digit2 = (num / 97 ) % 10;
digit3 = (num / 14) % 10;
digit4 = (num / 23) % 10;
digit5= (num / 2) % 10;
digit6= (num / 24) % 10;
digit7= (num / 4) % 10;
digit8= (num / 8) % 10;
digit9= (num / 10) % 10;
digitalWrite(latchPin[disp], LOW);
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, B00010000); // NUM X X X
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, digits[digit1]);
digitalWrite(latchPin[disp], HIGH);
delay(1000);
digitalWrite(latchPin[disp], LOW);
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, B00010000); // X X X NUM
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, digits[digit2]);
digitalWrite(latchPin[disp], HIGH);
delay(1000);
digitalWrite(latchPin[disp], LOW);
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, B00010000); // X X NUM X
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, digits[digit3]);
digitalWrite(latchPin[disp], HIGH);
delay(1000);
digitalWrite(latchPin[disp], LOW);
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, B00010000); // X NUM X X
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, digits[digit4]);
digitalWrite(latchPin[disp], HIGH);
delay(1000);
digitalWrite(latchPin[disp], LOW);
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, B00010000); // NUM X X X
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, digits[digit5]);
digitalWrite(latchPin[disp], HIGH);
delay(1000);
digitalWrite(latchPin[disp], LOW);
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, B00010000); // NUM X X X
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, digits[digit6]);
digitalWrite(latchPin[disp], HIGH);
delay(1000);
digitalWrite(latchPin[disp], LOW);
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, B00010000); // NUM X X X
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, digits[digit7]);
digitalWrite(latchPin[disp], HIGH);
delay(1000);
digitalWrite(latchPin[disp], LOW);
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, B00010000); // NUM X X X
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, digits[digit8]);
digitalWrite(latchPin[disp], HIGH);
delay(1000);
digitalWrite(latchPin[disp], LOW);
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, B00010000); // NUM X X X
shiftOut(dataPin[disp], clockPin[disp], MSBFIRST, digits[digit9]);
digitalWrite(latchPin[disp], HIGH);
delay(1000);
}
I'm a beginer on this arduino world and it's my first projekt with arduino. And so I need still have a lot to learn in this area.