Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save kioltk/cab039ae27d6733fb5a9cc577129b2f5 to your computer and use it in GitHub Desktop.
Save kioltk/cab039ae27d6733fb5a9cc577129b2f5 to your computer and use it in GitHub Desktop.
int a = 1;
int b = 2;
int c = 3;
int d = 4;
int e = 5;
int f = 6;
int g = 7;
int dp = 8;
int d4 = 9;
int d3 = 10;
int d2 = 11;
int d1 = 12;
// set variable
long n = 1230;
int x = 100;
int del = 55; // fine adjustment for clock
int ledPin = 14;// define digital interface 13
int peekPin = 15;// define digital interface 13
long timeToExplode = 40000;
long startTime;
int peekTime = 75;
int pauseTime = 1125;
void setup() {
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(dp, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(peekPin, OUTPUT);
startTime = millis();
}
/////////////////////////////////////////////////////////////
void loop() {
// Serial.begin(9600);
Serial.println("Peeeeee...");
digitalWrite(ledPin, HIGH);
digitalWrite(peekPin, HIGH);
if (timeLeft() < 0) {
Serial.println("Boom");
showBoom(1500);
digitalWrite(ledPin, LOW);
digitalWrite(peekPin, LOW);
exit(0);
return;
}
showTime(peekTime);
Serial.println("...eeeeeek!");
digitalWrite(ledPin, LOW);
digitalWrite(peekPin, LOW);
showTime(pauseTime);
pauseTime = (int)(1125 * (((float)timeLeft()) / ((float)timeToExplode)));
Serial.print("Time left: ");
Serial.print((float)timeLeft() / 1000);
Serial.println("s");
Serial.print("Pause time: ");
Serial.println((((float)timeLeft()) / ((float)timeToExplode)));
}
void showTime(int duration){
long showingTime = millis();
do {
long t = timeLeft();
Display(1, (t / 1000000) % 10);
Display(2, (t / 100000) % 10);
Display(3, (t / 10000) % 10);
Display(4, (t / 1000) % 10);
} while(millis() - showingTime < duration);
}
void showBoom(int duration){
long showingTime = millis();
do {
long t = timeLeft();
Display(1, 8);
Display(2, 0);
Display(3, 0);
Display(4, 0);
} while(millis() - showingTime < duration);
ClearAll() ; // clear the screen
}
long timeLeft() {
return timeToExplode - (millis() - startTime);
}
///////////////////////////////////////////////////////////////
void WeiXuan(unsigned char n) {
switch (n) {
case 1:
digitalWrite(d1, LOW);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
break;
case 2:
digitalWrite(d1, HIGH);
digitalWrite(d2, LOW);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
break;
case 3:
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, LOW);
digitalWrite(d4, HIGH);
break;
case 4:
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, LOW);
break;
default :
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
break;
}
}
void Num_0() {
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
digitalWrite(dp, LOW);
}
void Num_1() {
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp, LOW);
}
void Num_2() {
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
digitalWrite(dp, LOW);
}
void Num_3() {
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
digitalWrite(dp, LOW);
}
void Num_4() {
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp, LOW);
}
void Num_5()
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp, LOW);
}
void Num_6()
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp, LOW);
}
void Num_7()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp, LOW);
}
void Num_8()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp, LOW);
}
void Num_9()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp, LOW);
}
void Clear() {
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp, LOW);
}
void ClearAll() {
WeiXuan(1);
Clear();
WeiXuan(2);
Clear();
WeiXuan(3);
Clear();
WeiXuan(4);
}
void pickNumber(unsigned char n) {// select number
switch (n) {
case 0: Num_0();
break;
case 1: Num_1();
break;
case 2: Num_2();
break;
case 3: Num_3();
break;
case 4: Num_4();
break;
case 5: Num_5();
break;
case 6: Num_6();
break;
case 7: Num_7();
break;
case 8: Num_8();
break;
case 9: Num_9();
break;
default: Clear();
break;
}
}
void Display(unsigned char x, unsigned char Number) {// take x as coordinate and display number
delay(1);
Clear() ; // clear the screen
WeiXuan(x);
pickNumber(Number);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment