#define REDBUTTON 10 // CONNECTED TO A0 - ACTS TO CONTROL RED BUTTON #define GREENBUTTON 11 // CONNECTED TO A1 - ACTS TO CONTROL GREEN BUTTON #define GAMEDONE 12 // CONNECTED TO A4 - RECEIVES SIGNAL FROM BEAST DISPLAY WHEN GAME IS DONE #define BEASTRESET 13 // CONNECTED TO A5 - ACTS TO RESET BEAST DISPLAY #define WIRELESS 3 // Add a wireless receiver/transmitter into the mix #define VIBRATION 4 // Add a wireless receiver/transmitter into the mix void setup() { pinMode(REDBUTTON,OUTPUT); pinMode(GREENBUTTON,OUTPUT); pinMode(GAMEDONE,INPUT); pinMode(BEASTRESET,OUTPUT); pinMode(VIBRATION,INPUT); pinMode(WIRELESS,INPUT); } void loop() { BEASTRST(); // RESET BEAST DISPLAY delay(500); // 500MS DELAY // THE BEAST DISPLAY SHOULD DISPLAY "C UP" FOR UPCOUNT MODE PULSEGREEN(); // SIMULATE A GREEN BUTTON PRESS TO CHANGE THE FUNCTION TO "C DN", WHICH IS DOWNCOUNT MODE PULSERED(); // SIMULATE A RED BUTTON PRESS TO SELECT "C DN" delay(400); // WAIT 400MS BEFORE MOVING FORWARD EASYPROGRAM(); // CALL THE EASYPROGRAM FUNCTION TO EASILY PROGRAM IN ANY VALUE BETWEEN 0000 AND 9999 IN UPCOUNT/DOWNCOUNT MODES, AND 0100 IN COUNT DOWN TIMER MODE. while (digitalRead(WIRELESS) == LOW) { // DO NOTHING UNTIL A SIGNAL FROM A WIRELESS TRANSMITTER IS RECEIVED (5V). ONCE RECEIVED, END LOOP, WHICH RESETS THE UNIT {} } delay(1000); // WAIT ON SECOND PULSEGREEN(); // THE UNIT HAS NOW BEEN PROGRAMMED WITH THE VALUE PROGRAMMED IN THE EASTPROGRAM FUNCTION (60:00). SIMULATE A GREEN BUTTON PRESS TO STARY COUNTDOWN. delay(100); while (digitalRead(WIRELESS) == LOW) { // DO NOTHING UNTIL A SIGNAL FROM A WIRELESS TRANSMITTER IS RECEIVED (5V). ONCE RECEIVED, END LOOP, WHICH RESETS THE UNIT { if(digitalRead(VIBRATION) == HIGH) // WHEN ARDUINO RECEIVES A 5V SIGNAL WHILE THE WIRELESS SIGNAL IS LOW AT THIS POINT IN THE SOFTWARE, INCREMENT COUNTER { PULSEGREEN(); // SIMULATE A GREEN BUTTON PRESS TO INCREMENT DISPLAY delay(250); // WAIT 250ms. // PLEASE NOTE THAT THIS IS JUST AN EXAMPLE. } } } PULSEGREEN(); // PULSE GREEN TO DECREMENT delay(1000); // ONCE THE WIRELESS SIGNAL HAS BEEN DETECTED, GIVE YOURSELF ONE MINUTE TO LET GO OF THE BUTTON BEFORE THE COUNTDOWN STARTS // delay(1000); // WAIT A 100MS while (digitalRead(WIRELESS) == LOW) { // DO NOTHING UNTIL A SIGNAL FROM A WIRELESS TRANSMITTER IS RECEIVED (5V). ONCE RECEIVED, END LOOP, WHICH RESETS THE UNIT {} } // WHEN A 5V SIGNAL IS RECEIVED TO GPIO 3, THE WHILE STATEMENT ENDS, WHICH ENDS THE VOID LOOP STATEMENT, WHICH STARTS THE LOOP OVER, AND CALLS THE BEASTRST FUNCTION // WHICH ACTS TO RESET THE UNIT } void BEASTRST() // Pulse the BEASTRESET line high for one second, then low again to reset the Beast display { digitalWrite(BEASTRESET,HIGH); delay(1000); digitalWrite(BEASTRESET,LOW); delay(500); } void PULSEGREEN() // This function takes 420ms to execute. It acts as a quick GREEN button push // This funtion should be used when selecting mode of operation, incrementing digits during programming, and incrementing/decrementing during game time { digitalWrite(GREENBUTTON,HIGH); delay(100); digitalWrite(GREENBUTTON,LOW); delay(320); } void PULSEGREENLONG() // This function takes just under one second to execute. It acts as a long GREEN button push - USED DURING PROGRAMMING MODE ONLY // This funtion acts to shift left one digit during programming mode { digitalWrite(GREENBUTTON,HIGH); delay(575); digitalWrite(GREENBUTTON,LOW); delay(200); } void PULSERED() // This function takes 350ms to execute. It acts as a quick RED button push // This funtion is only used to make mode selections { digitalWrite(REDBUTTON,HIGH); delay(100); digitalWrite(REDBUTTON,LOW); delay(200); } void EASYPROGRAM() { // THIS FUNCTION IS PROGRAMMED TO SET THE TIMER TO 60 MINUTES. FOR EACH DIGIT, NOTIVE THE "a < 0" INFO IN THE FOR STATEMENTS. SET THE "0" TO ANY NUMBER // BETWEEN 0 AND 9. PLEASE NOTE THAT THE SECOND FROM THE RIGHT DIGIT CAN ONLY BE PROGRAMMED UP TO 5 IN COUNTDOWN TIMER MODE, AS THE HIGHEST TIME IN SECONDS IS 59. // FOR INSTANCE: 99:59. // PROGRAM RIGHT MOST DIGIT (SECONDS) delay(100); for(int a = 0 ; a < 0 ; a++) { PULSEGREEN(); } PULSEGREENLONG(); // PROGRAM SECOND FROM RIGHT MOST DIGIT (TENS OF SECONDS) delay(200); for(int a = 0 ; a < 1 ; a++) { PULSEGREEN(); } PULSEGREENLONG(); // PROGRAM SECONDFROM LEFT MOST DIGIT (MINUTES) delay(200); for(int a = 0 ; a < 0 ; a++) { PULSEGREEN(); } PULSEGREENLONG(); // PROGRAM LEFT MOST (FINAL) DIGIT (TENS OF MINUTES) delay(200); for(int a = 0 ; a < 0 ; a++) { PULSEGREEN(); } PULSEGREENLONG(); }