aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Mikhirev2012-08-04 21:57:38 +0400
committerDmitry Mikhirev2012-08-04 21:57:38 +0400
commit94527a8213c689181ca2b2b11b6d919176ceb33f (patch)
tree6d24bc8a9ffbd71f590870e05aa4a3d1968c78dc
parent01b3b3e69c15bce68637571bab2d7274982eaaff (diff)
downloadbrainuino-94527a8213c689181ca2b2b11b6d919176ceb33f.tar.gz
brainuino-94527a8213c689181ca2b2b11b6d919176ceb33f.tar.bz2
brainuino-94527a8213c689181ca2b2b11b6d919176ceb33f.tar.xz
brainuino-94527a8213c689181ca2b2b11b6d919176ceb33f.zip
no interrupt for stop button
-rw-r--r--brainuino.pde53
1 files changed, 29 insertions, 24 deletions
diff --git a/brainuino.pde b/brainuino.pde
index 2dd2b60..e935d3f 100644
--- a/brainuino.pde
+++ b/brainuino.pde
@@ -53,6 +53,11 @@ void loop()
startTime = 0;
timer = timer1;
printGameType();
+
+ // ensure that stop button is released
+ while (digitalRead(CONTROL2) == LOW) {
+ delay(20);
+ }
ask();
}
@@ -68,13 +73,18 @@ void ask()
#endif
while (true) {
-
+
// if start button is pressed
if (digitalRead(CONTROL1) == LOW) {
discuss();
return;
}
-
+
+ // if stop button is pressed
+ if (digitalRead(CONTROL2) == LOW) {
+ return;
+ }
+
// some other button could be pressed
switch (buttonPressed) {
case 0:
@@ -89,8 +99,6 @@ void ask()
else {
answer(buttonPressed);
}
- case 5:
- return;
}
delay(100);
@@ -129,14 +137,22 @@ void discuss()
while (!buttonPressed && time < (timer - preSignal) * 1000) {
refresh();
delay(25);
+ if (digitalRead(CONTROL2) == LOW) {
+ tone(SPEAKER, 1500, 500);
+ return;
+ }
}
if (!buttonPressed)
tone(SPEAKER, 2121, 1000);
while (!buttonPressed && time < timer * 1000) {
refresh();
delay(25);
+ if (digitalRead(CONTROL2) == LOW) {
+ tone(SPEAKER, 1784, 500);
+ return;
+ }
}
-
+
// the time is out or someone pressed a button... hmm...
switch (buttonPressed) {
case 1:
@@ -144,8 +160,6 @@ void discuss()
case 3:
case 4:
answer(buttonPressed);
- case 5:
- buttonPressed = 0;
break;
case 0:
tone(SPEAKER, 3000, 1000);
@@ -175,32 +189,27 @@ void answer(uint8_t num) {
printPreciseTime();
tone(SPEAKER, 2523, 1000);
buttonPressed = 0;
-
+
// a pause is needed to release start button, if it was not yet
delay(2000);
-
+
while (true) {
-
+
// if start button was pressed
if (digitalRead(CONTROL1) == LOW) {
- buttonPressed = 0;
digitalWrite(REDLAMP, LOW);
+ buttonPressed = 0;
discuss();
return;
}
-
+
// if stop button was pressed
- switch (buttonPressed) {
- case 0:
- break;
- case 5:
- buttonPressed = 0;
+ if (digitalRead(CONTROL2) == LOW) {
digitalWrite(REDLAMP, LOW);
- return;
- default:
buttonPressed = 0;
+ return;
}
-
+
delay(100);
}
}
@@ -302,10 +311,6 @@ void readButton() {
buttonPressed = 4;
return;
}
- if (digitalRead(CONTROL2) == LOW) {
- buttonPressed = 5;
- return;
- }
}