#define STR A3
#define DATA A2
#define CLK A4
#define gmb 8
long lastMillis = 0;
long debounceDelay = 200;
void setup() {
digitalWrite(CLK,LOW);
digitalWrite(DATA,LOW);
digitalWrite(STR,LOW);
pinMode(STR,OUTPUT);
pinMode(DATA,OUTPUT);
pinMode(CLK,OUTPUT);
pinMode(gmb, INPUT_PULLUP);
lastMillis = 0;
}
// EDC.BAFG
byte segTable[10] = {0b11101110, 0b00101000, 0b11001101, 0b01101101, 0b00101011,
0b01100111, 0b11100111, 0b00101100, 0b11101111, 0b01101111};
int k=0;
int gmbst=1;
void shiftOUT(byte n)
{
byte bitmask=0x80;
while(bitmask)
{
if(bitmask & n) digitalWrite(DATA,LOW);
else digitalWrite(DATA,HIGH);
digitalWrite(CLK,HIGH);
digitalWrite(CLK,LOW);
bitmask>>=1;
}
digitalWrite(STR,HIGH);
digitalWrite(STR,LOW);
}
void disp(int n)
{
shiftOUT(segTable[n]);
}
void loop() {
if(millis() - lastMillis > debounceDelay)
{
if(digitalRead(gmb)==0 && gmbst==1)
{
disp(k);
k++;
if(k==10) k=0;
gmbst=0;
lastMillis = millis();
}
}
if(millis() - lastMillis > debounceDelay)
{
if(digitalRead(gmb)==1 && gmbst==0)
lastMillis = millis();
gmbst=1;
}
}