int clockpin = 2; // connect ke pin 11 on the '595
int latchpin = 3; // connect ke pin 12 on the '595
int datapin = 4; // connect ke pin 14 on the '595
float b = 0;
int c = 0;
float d = 0;
int e = 0;
int speed = 500;
int segdisp1[10] = {3,159,37,13,153,73,65,27,1,9 };
int segdisp[10] = {
0b00111111,
0b00000110,
0b01011011,
0b01001111,
0b01100110,
0b01101101,
0b01111101,
0b00100111,
0b01111111,
0b01101111,
};
void setup()
{
pinMode(latchpin, OUTPUT);
pinMode(clockpin, OUTPUT);
pinMode(datapin, OUTPUT);
}
void loop()
{
// Count up
for (int z=0; z<100; z++)
{
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, MSBFIRST, 0); // clears the right display
shiftOut(datapin, clockpin, MSBFIRST, 0); // clears the left display
digitalWrite(latchpin, HIGH);
if (z<10)
{
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, MSBFIRST, segdisp[z]);
shiftOut(datapin, clockpin, MSBFIRST, 0);
digitalWrite(latchpin, HIGH);
}
else if (z>=10)
{
d=z%10;
c=int(d);
b=z/10;
e = int(b);
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, MSBFIRST, segdisp[c]);
shiftOut(datapin, clockpin, MSBFIRST, segdisp[e]);
digitalWrite(latchpin, HIGH);
}
delay(speed);
}
delay(2000);
// Count down
for (int z=99; z>=0; z--)
{
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, LSBFIRST, 0); // clears the right display
shiftOut(datapin, clockpin, LSBFIRST, 0); // clears the left display
digitalWrite(latchpin, HIGH);
if (z<10)
{
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, LSBFIRST, segdisp[z]);
shiftOut(datapin, clockpin, LSBFIRST, 255);
digitalWrite(latchpin, HIGH);
}
else if (z>=10)
{
d=z%10;
c=int(d);
b=z/10;
e = int(b);
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, LSBFIRST, segdisp[c]);
shiftOut(datapin, clockpin, LSBFIRST, segdisp[e]);
digitalWrite(latchpin, HIGH);
}
delay(speed);
}
delay(2000);
}