Documentation:VANT151/2021/Capstone/APSC/Team4/Sub-Team UI/UI System Program
#include <MsTimer2.h>
#include <SoftwareSerial.h>
// #include "DHT.h"
// #define DHTPIN 12
// #define DHTTYPE DHT11
// DHT dht(DHTPIN, DHTTYPE);
#define txPin 1
SoftwareSerial LCD = SoftwareSerial(0, txPin);
const int LCDdelay = 3; //increase if LCD is unstable
//time related
byte ms200 = 0, seconds = 0, minutes = 0;
byte timeSec = 0, timeMin = 0, timeHr = 0;
int timeStart = 0, timeStop = 0;
int timePaused = 0, timeContinued = 0, timePaused0 = 0, timePaused1 = 0;
//screen
int screen = 1;
//backlight
byte light = 2, light0 = 2;
//buttons
boolean right = 0, up = 0, left = 0, down = 0, ok = 0, Switch = 0, door = 0;
boolean rightReleased = 1, upReleased = 1, leftReleased = 1, downReleased = 1, okReleased = 1, switchReleased = 1, doorOpened = 1;
boolean changed = 0;
//function
byte progress;
boolean AUTO = 1;
boolean start = 0, game = 0;
boolean emerStop = 0, Lock = 0;
//sensor
byte Temp = 30;
// int startHumid, Humid, TempDHT;
//game
byte bracket = 0, mole = 0;
int timeMol, score = 0;
boolean firstRound = 0;
void screenDisplay(int x)
{
if (x == 1)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" ++++++++ ");
LCD.print(" + +rature");
LCD.print(" Time +Start +Tempe-");
LCD.print(" ++++++++ ");
}
else if (x == 2)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" ++++++++ ");
LCD.print(" +rature+ ");
LCD.print("Start +Tempe-+Option");
LCD.print(" ++++++++ ");
}
else if (x == 3)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" ++++++++ ");
LCD.print("rature+ + ");
LCD.print("Tempe-+Option+ Game ");
LCD.print(" ++++++++ ");
}
else if (x == 4)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" ++++++++ ");
LCD.print(" + + ");
LCD.print("Option+ Game + Time ");
LCD.print(" ++++++++ ");
}
else if (x == 5)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" ++++++++ ");
LCD.print(" + + ");
LCD.print(" Game + Time + Start");
LCD.print(" ++++++++ ");
if (AUTO)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0x1B);
LCD.print("[auto]");
}
}
else if (x == 21)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" START? ");
LCD.print(" +NO+ YES ");
LCD.print(" ++++ ");
LCD.print(" ++++ ");
}
else if (x == 31)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" START? ");
LCD.print(" NO +YES+ ");
LCD.print(" +++++ ");
LCD.print(" +++++ ");
}
else if (x == 22)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print("Temperature: 0-50 C ");
LCD.print(" -10 +10 ");
LCD.print(" +1 ");
LCD.print(" -1 ");
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0x1D);
LCD.print(Temp);
}
else if (x == 23)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" ++++++ ");
LCD.print(" +lock+ nance ");
LCD.print(" +safe+ lumi- back ");
LCD.print(" ++++++ ");
}
else if (x == 33)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" +++++++ ");
LCD.print(" lock +nance+ ");
LCD.print(" safe +lumi-+ back ");
LCD.print(" +++++++ ");
}
else if (x == 43)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" ++++++");
LCD.print(" lock nance + +");
LCD.print(" safe lumi- +back+");
LCD.print(" ++++++");
}
else if (x == 25)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" Hr Min Sec ");
LCD.print("[ ] AUTO ");
LCD.print(" +1 +1 +1 ");
LCD.print(" -1 -1 -1 ");
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0x15);
LCD.print(timeHr);
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0x1A);
LCD.print(timeMin);
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0x1F);
LCD.print(timeSec);
}
else if (x == 35)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" Hr Min Sec ");
LCD.print(" [ ] AUTO ");
LCD.print(" +1 +1 +1 ");
LCD.print(" -1 -1 -1 ");
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0x15);
LCD.print(timeHr);
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0x1A);
LCD.print(timeMin);
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0x1F);
LCD.print(timeSec);
}
else if (x == 45)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" Hr Min Sec ");
LCD.print(" [ ] AUTO ");
LCD.print(" +1 +1 +1 ");
LCD.print(" -1 -1 -1 ");
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0x15);
LCD.print(timeHr);
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0x1A);
LCD.print(timeMin);
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0x1F);
LCD.print(timeSec);
}
else if (x == 55)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" Hr Min Sec ");
LCD.print(" [AUTO]");
LCD.print(" +1 +1 +1 ");
LCD.print(" -1 -1 -1 ");
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0x15);
LCD.print(timeHr);
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0x1A);
LCD.print(timeMin);
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0x1F);
LCD.print(timeSec);
}
else if (x == 231)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" Progress: % ");
LCD.print(" Game + Lock + Stop ");
LCD.print(" ++++++++ ");
LCD.print(" ++++++++ ");
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0xB);
LCD.print(progress);
}
else if (x == 331)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" Progress: % ");
LCD.print(" Lock + Stop + Game ");
LCD.print(" ++++++++ ");
LCD.print(" ++++++++ ");
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0xB);
LCD.print(progress);
}
else if (x == 2331)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" Stop? ");
LCD.print(" +No+ Yes ");
LCD.print(" ++++ ");
LCD.print(" ++++ ");
}
else if (x == 3331)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" Stop? ");
LCD.print(" No +Yes+ ");
LCD.print(" +++++ ");
LCD.print(" +++++ ");
}
else if (x == 431)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" Progress: % ");
LCD.print(" Stop + Game + Lock ");
LCD.print(" ++++++++ ");
LCD.print(" ++++++++ ");
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0xB);
LCD.print(progress);
}
else if (x == 233)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print("Brightness(1-8): ");
LCD.print(" [ ] ");
LCD.print(" +1 ");
LCD.print(" -1 ");
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0x1C);
LCD.print(light);
}
else if (x == 223)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print("Open safe lock? ");
LCD.print(" +NO+ YES ");
LCD.print(" ++++ ");
LCD.print(" ++++ ");
}
else if (x == 323)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print("Open safe lock? ");
LCD.print(" NO +YES+ ");
LCD.print(" +++++ ");
LCD.print(" +++++ ");
}
else if (x == 2323 || x == 2231)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print("Locked. ");
LCD.print(" buttons to unlock.");
LCD.print(" Press all the ");
LCD.print(" ");
}
else if (screen == 24 || screen == 2431)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print("Play:Catch the Mole?");
LCD.print(" +No+ Yes ");
LCD.print(" ++++ ");
LCD.print(" ++++ ");
}
else if (screen == 34 || screen == 3431)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print("Play:Catch the Mole?");
LCD.print(" No +Yes+ ");
LCD.print(" +++++ ");
LCD.print(" +++++ ");
}
else if (x == 1000) //function finished
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print("Operation Completed.");
LCD.print(" + OK + ");
LCD.print(" ++++++ ");
LCD.print(" ++++++ ");
}
else if (screen==20231)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" Paused: ");
LCD.print(" Door is opened. ");
LCD.print(" ");
LCD.print(" ");
}
else if (emerStop) //emergency stoped
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print("Emergency Stoped. ");
LCD.print(" Press all the ");
LCD.print(" ");
LCD.print(" buttons to quit .");
}
}
void buttonfunction()
{
/* 0
0
000000000000
0
0
*/
if (right && changed == 0 && Lock == 0 && emerStop == 0 && game == 0)
{
clearLCD();
if (screen < 10)
{
screen++;
if (screen == 6) screen = 1;
}
else if (screen == 22)
{
Temp += 10;
if (Temp > 50) Temp -= 50;
}
else if (screen == 2431 || screen == 2331)
{
screen += 1000;
}
else if (screen == 233 || screen == 31 || screen == 43 || screen == 55 || screen == 34 || screen == 3431 || screen == 3331)
{
//disabled
}
else if (screen > 100)
{
screen += 100;
if (screen == 531) screen = 231;
}
else
{
screen += 10;
}
changed++;
}
/*
0
0
000000000000
0
0
*/
if (left && changed == 0 && Lock == 0 && emerStop == 0 && game == 0)
{
clearLCD();
if (screen < 10)
{
screen--;
}
else if (screen == 22)
{
Temp -= 10;
if (Temp < 0) Temp += 50;
}
else if (screen == 233 || screen == 21 || screen == 25 || screen == 23 || screen == 24 || screen == 2431 || screen == 2331)
{
//disabled
}
else if (screen == 3431 || screen == 3331)
{
screen -= 1000;
}
else if (screen > 100)
{
screen -= 100;
if (screen == 131) screen = 431;
}
else
{
screen -= 10;
}
if (screen == 0) screen = 5;
changed++;
}
/*
000 0 0
0 0 0 0
0 0 000
0 0 0 0
000 0 0
*/
if (ok && changed == 0 && Lock == 0 && emerStop == 0 && game == 0)
{
clearLCD();
if (screen < 10)
{
screen += 20;
}
else if (screen == 23 || screen == 33)
{
screen += 200;
}
else if (screen == 31 && AUTO)
{
// startHumid=dht.readHumidity();
// screen += 200;
// start=1;
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print("We apologize that ");
LCD.print(" be demontrated. ");
LCD.print(" this function can't");
LCD.print(" Back in 5 seconds. ");
delay(5000);
screen = 1;
}
else if (screen == 31 && AUTO == 0)
{
start = 1;
timePaused=0;
screen += 200;
timeStart = 60 * minutes + seconds;
timeStop = 3600 * timeHr + 60 * timeMin + timeSec + timeStart;
}
else if (screen == 25 || screen == 35 || screen == 45)
{
if (timeHr != 0 || timeMin != 0 || timeSec != 0) AUTO = 0;
else AUTO = 1;
screen = screen % 10;
}
else if (screen == 55)
{
AUTO = 1;
screen = screen % 10;
}
else if (screen == 323 || screen == 231)
{
Lock = 1;
screen += 2000;
}
else if (screen == 431 || screen == 331)
{
screen += 2000;
}
else if (screen == 2431 || screen == 2331)
{
screen -= 2000;
}
else if (screen == 3331)
{
digitalWrite(11, 0);
screen = 1;
start = 0;
}
else if (screen == 3431 || screen == 34)
{
game = 1;
screen += 20000;
}
else if (screen == 1000)
{
screen -= 999;
}
else if (screen == 1001)
{
screen -= 1000;
}
else
{
screen = screen % 10;
}
changed++;
}
/*
0
0 0 0
0 0 0
0
0
*/
if (up && changed == 0 && Lock == 0 && emerStop == 0 && game == 0)
{
clearLCD;
if (screen == 22)
{
Temp++;
if (Temp > 50) Temp -= 51;
}
else if (screen == 25)
{
timeHr++;
if (timeHr == 24) timeHr = 0;
}
else if (screen == 35)
{
timeMin++;
if (timeMin == 60) timeMin = 0;
}
else if (screen == 45)
{
timeSec++;
if (timeSec == 60) timeSec = 0;
}
else if (screen == 233)
{
light++;
if (light > 8) light = 8;
}
changed++;
}
/*
0
0
0 0 0
0 0 0
0
*/
if (down && changed == 0 && Lock == 0 && emerStop == 0 && game == 0)
{
clearLCD;
if (screen == 22)
{
Temp--;
if (Temp < 0) Temp += 51;
}
else if (screen == 25)
{
timeHr--;
if (timeHr == 255) timeHr = 23;
}
else if (screen == 35)
{
timeMin--;
if (timeMin == 255) timeMin = 59;
}
else if (screen == 45)
{
timeSec--;
if (timeSec == 255) timeSec = 59;
}
else if (screen == 233)
{
light--;
if (light < 1) light = 1;
}
changed++;
}
if (Switch && changed == 0)
{
emerStop = 1;
screen += 30000;
start = 0;
game = 0; bracket = 0;
changed++;
}
if (doorOpened&&screen==231)
{
screen+= 20000;
}
if (door&&screen==20231)
{
screen-= 20000;
}
if (leftReleased && rightReleased && upReleased && downReleased && okReleased && switchReleased)
{
changed = 0;
}
if (left && right && down && ok && up && changed == 0)
{
if (Lock && emerStop == 0)
{
Lock = 0;
if (screen == 2323)
{
screen = 1;
}
if (screen == 2231)
{
screen = 231;
}
changed++;
}
if (emerStop)
{
emerStop = 0;
if (Lock && screen == 22323)
{
screen -= 20000;
}
else if (Lock && screen == 22231)
{
screen = 2323;
}
else
{
screen = 1;
}
changed++;
}
}
}
void functioning()
{
if (start == 1 && emerStop == 0)
{
if (game == 0 && Lock == 0 && door)
{
digitalWrite(11, 1); //use LED to represent motor and fans functioning
}
if (AUTO)
{
// Humid = dht.readHumidity();
// TempDHT=dht.readTemperature();
// if(doorOpened)
// {
// digitalWrite(11, 0);
// }
// progress = (startHumid - 20 - Humid) / (startHumid - 20);
// if(Temp>=5)
// {
// if (TempDHT>Temp) digitalWrite(11,0);
// else if(TempDHT<=Temp-2) digitalWrite(11,1);
// }
// else
// {
// if (TempDHT>=Temp+2) digitalWrite(11,0);
// else if(TempDHT<Temp) digitalWrite(11,1);
// }
// if (Humid <= 20 )
// {
// digitalWrite(11, 0);
// if(screen>=231&&screen<=431)
// {
// start = 0;
// screen=1000;
// }
// }
}
else
{
if (doorOpened)
{
timePaused0 = 60 * minutes + seconds - timeContinued;
digitalWrite(11, 0);
}
else
{
timeContinued = 60 * minutes + seconds;
}
if(door&&timePaused1!=timePaused0)
{
timePaused+=timePaused0;
timePaused1=timePaused0;
}
progress = (60 * minutes + seconds - timeStart - timePaused) * 100 / (timeStop - timeStart);
// if(Temp>=5)
// {
// if (TempDHT>Temp) digitalWrite(11,0);
// else if(TempDHT<=Temp-2) digitalWrite(11,1);
// }
// else
// {
// if (TempDHT>=Temp+2) digitalWrite(11,0);
// else if(TempDHT<Temp) digitalWrite(11,1);
// }
if ((60 * minutes + seconds - timeStart - timePaused) >= (timeStop - timeStart))
{
progress = 100;
digitalWrite(11, 0);
if (screen >= 231 && screen <= 431)
{
start = 0;
screen = 1000;
}
}
}
}
else if (emerStop == 1)
{
digitalWrite(11, 0);
}
}
void setup()
{
pinMode(txPin, OUTPUT);//LCD
pinMode(2, INPUT_PULLUP); // right button
pinMode(3, INPUT_PULLUP); // ok button
pinMode(4, INPUT_PULLUP); // up button
pinMode(5, INPUT_PULLUP); // down button
pinMode(6, INPUT_PULLUP); // left button
pinMode(7, INPUT_PULLUP);//Door switch
pinMode(10, INPUT_PULLUP);//switch
pinMode(11, OUTPUT);//LED
LCD.begin(9600);
// dht.begin();
backlight(2); // acceptable values 1 to 8
MsTimer2::set(200, timebase);
MsTimer2::start(); // start the ISR
}
void loop()
{
buttonStatus();
buttonfunction();
screenDisplay(screen);
functioning();
if (game && emerStop != 1)
{
Game();
}
if (light0 != light) backlight(light);
light0 = light;
}
void timebase()
{
ms200++;
if (ms200 == 5)
{
seconds++;
ms200 = 0;
}
if (seconds == 60)
{
minutes++;
seconds = 0;
}
delay(LCDdelay);
}
void clearLCD()
{
LCD.write(0xFE);
LCD.write(0x51);
delay(LCDdelay);
}
void backlight(int x)
{
LCD.write(0xFE);
LCD.write(0x53);
LCD.write(x);
delay(1);
}
void buttonStatus()
{
if (digitalRead(2))
{
right = 0;
rightReleased = 1;
}
else
{
if (rightReleased) {
right = 1;
rightReleased = 0;
}
}
if (digitalRead(3))
{
ok = 0;
okReleased = 1;
}
else
{
if (okReleased) {
ok = 1;
okReleased = 0;
}
}
if (digitalRead(4))
{
up = 0;
upReleased = 1;
}
else
{
if (upReleased) {
up = 1;
upReleased = 0;
}
}
if (digitalRead(5))
{
down = 0;
downReleased = 1;
}
else
{
if (downReleased) {
down = 1;
downReleased = 0;
}
}
if (digitalRead(6))
{
left = 0;
leftReleased = 1;
}
else
{
if (leftReleased) {
left = 1;
leftReleased = 0;
}
}
if (digitalRead(10))
{
Switch = 0;
switchReleased = 1;
}
else
{
if (switchReleased)
{
Switch = 1;
switchReleased = 0;
}
}
if (digitalRead(7)==0)
{
door = 0;
doorOpened = 1;
}
else
{
if (doorOpened)
{
door = 1;
doorOpened = 0;
}
}
}
void Game()
{
if (firstRound == 0)
{
timeMol = minutes * 60 + seconds;
randomSeed(seconds);
mole = random(0, 16);
if (score == 0)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print("Instruction: ");
LCD.print(" Catch the mole (0).");
LCD.print("Press OK to ");
LCD.print(" [ OK ] ");
}
else
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" Game Resumed. ");
LCD.print(" [ OK ] ");
LCD.print(" ");
LCD.print(" ");
}
if (ok && changed == 0)
{
firstRound++;
changed++;
}
}
else
{
if (bracket != 16)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" _ _ _ _ |Score: ");
LCD.print(" _ _ _ _ | ");
LCD.print(" _ _ _ _ | ");
LCD.print(" _ _ _ _ | Back ");
}
else
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(1 - 1);
LCD.print(" _ _ _ _ |Score: ");
LCD.print(" _ _ _ _ | ");
LCD.print(" _ _ _ _ | ");
LCD.print(" _ _ _ _ |[Back] ");
}
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(0x36);
LCD.print(score);
if ((minutes * 60 + seconds - timeMol) >= (6 - 0.005 * score))
{
mole = random(0, 16);
timeMol = minutes * 60 + seconds;
}
if (bracket >= 0 && bracket <= 3) //cursor position
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(bracket * 3);
LCD.print("[");
LCD.write(0xFE);
LCD.write(0x4A);
LCD.print("]");
}
else if (bracket >= 4 && bracket <= 7)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(28 + 3 * bracket);
LCD.print("[");
LCD.write(0xFE);
LCD.write(0x4A);
LCD.print("]");
}
else if (bracket >= 8 && bracket <= 11)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(bracket * 3 - 4);
LCD.print("[");
LCD.write(0xFE);
LCD.write(0x4A);
LCD.print("]");
}
else if (bracket >= 12 && bracket <= 15)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(bracket * 3 + 48);
LCD.print("[");
LCD.write(0xFE);
LCD.write(0x4A);
LCD.print("]");
}
if (mole >= 0 && mole <= 3) //mole position
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(mole * 3 + 1);
LCD.print("0");
}
else if (mole >= 4 && mole <= 7)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(29 + mole * 3);
LCD.print("0");
}
else if (mole >= 8 && mole <= 11)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(mole * 3 - 3);
LCD.print("0");
}
else if (mole >= 12 && mole <= 15)
{
LCD.write(0xFE);
LCD.write(0x45);
LCD.write(mole * 3 + 49);
LCD.print("0");
}
if (right && changed == 0)
{
if (bracket != 16 && bracket != 11 && bracket != 7 && bracket != 3)
{
bracket += 1;
}
changed++;
}
if (left && changed == 0)
{
if (bracket != 0 && bracket != 4 && bracket != 8 && bracket != 12)
{
bracket--;
}
changed++;
}
if (right && changed == 0)
{
bracket++;
if (bracket == 16) bracket = 16;
changed++;
}
if (up && changed == 0)
{
if (bracket >= 4 && bracket != 16) bracket -= 4;
changed++;
}
if (down && changed == 0)
{
if (bracket <= 11) bracket += 4;
changed++;
}
if (ok && changed == 0)
{
if (mole == bracket)
{
score += 10.9 - 0.01 * score;
timeMol = minutes * 60 + seconds;
mole = random(0, 16);
}
if (bracket == 16)
{
game = 0;
bracket = 0; firstRound = 0;
clearLCD();
if (screen == 23431) screen -= 23000;
else screen = 4;
}
changed++;
}
}
if (leftReleased && rightReleased && upReleased && downReleased && okReleased)
{
changed = 0;
}
}