Arduino Code:
------------------------------------------------------------------------------------
const byte startStopPin = 0, mistakePin = 1, buzzerPin = 16;
long startMillis;
void setup()
{
 pinMode(2, OUTPUT);
 pinMode(3, OUTPUT);
 pinMode(4, OUTPUT);
 pinMode(5, OUTPUT);
 pinMode(6, OUTPUT);
 pinMode(7, OUTPUT);
 pinMode(8, OUTPUT);
 pinMode(9, OUTPUT);
 pinMode(10, OUTPUT);
 pinMode(11, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(13, OUTPUT);
 pinMode(14, OUTPUT);
 pinMode(15, OUTPUT);
 
 pinMode(startStopPin, INPUT);
 pinMode(mistakePin, INPUT);
 pinMode(buzzerPin, OUTPUT);
 
 displayNumber(0);
 while(digitalRead(startStopPin) == LOW) // wait for the start signal
 { ; }
 
 startMillis = millis();
}
void loop()
{
 long number = 99 - (millis() - startMillis) / 1000;
 
 if (number <= 0)
 {
 gameOver();
 }
 
 if (digitalRead(startStopPin) == HIGH && (millis() - startMillis) > 2000)
 {
 while(true)
 { ; }
 }
 
 if (digitalRead(mistakePin) == HIGH && (millis() - startMillis) > 2000)
 {
 gameOver();
 }
 
 
 displayNumber(number);
}
void displayNumber(byte x)
{
 x %= 100;
 set1(~dec27(x % 10));
 set10(~dec27(x / 10));
}
void set1(byte value)
{
 digitalWrite(2, bitRead(value, 0)); // segment a
 digitalWrite(3, bitRead(value, 1)); // segment b
 digitalWrite(4, bitRead(value, 2)); // segment c
 digitalWrite(5, bitRead(value, 3)); // segment d
 digitalWrite(6, bitRead(value, 4)); // segment e
 digitalWrite(7, bitRead(value, 5)); // segment f
 digitalWrite(8, bitRead(value, 6)); // segment g
}
void set10(byte value)
{
 digitalWrite(9, bitRead(value, 0)); // segment a
 digitalWrite(10, bitRead(value, 1)); // segment b
 digitalWrite(11, bitRead(value, 2)); // segment c
 digitalWrite(12, bitRead(value, 3)); // segment d
 digitalWrite(13, bitRead(value, 4)); // segment e
 digitalWrite(14, bitRead(value, 5)); // segment f
 digitalWrite(15, bitRead(value, 6)); // segment g
}
byte dec27(byte decimal) {
 if (decimal == 0)
 return B00111111;
 if (decimal == 1)
 return B00000110;
 if (decimal == 2)
 return B01011011;
 if (decimal == 3)
 return B01001111;
 if (decimal == 4)
 return B01100110;
 if (decimal == 5)
 return B01101101;
 if (decimal == 6)
 return B01111101;
 if (decimal == 7)
 return B0000111;
 if (decimal == 8)
 return B01111111;
 if (decimal == 9)
 return B01101111;
return 0;
}
void gameOver()
{
 displayNumber(0);
 digitalWrite(buzzerPin, HIGH);
 delay(3000);
 digitalWrite(buzzerPin, LOW);
 while (true)
 { ; }
}


