Created
June 2, 2019 16:52
-
-
Save kioltk/cab039ae27d6733fb5a9cc577129b2f5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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