#include "GLOBALS.hpp"
void setup() {
Serial.begin(9600);
// bleSerial.begin(9600);
myChances.begin();
sevenSegment.begin();
pushbutton.begin();
buzzWire.begin();
buzz.begin();
buzz.alarm();
attachInterrupt(digitalPinToInterrupt(pushButtonPin), buttonPressedISR, CHANGE);
attachInterrupt(digitalPinToInterrupt(buzzWirePin), touchISR, CHANGE);
attachPinChangeInterrupt(digitalPinToPCINT(winWirePin), winISR, CHANGE);
}
void loop() {
if(Serial.available()) {
// String receivedString = Serial.readString();
// buzzWireStatus = (BuzzWireStates)(receivedString.charAt(0));
buzzWireStatus = (BuzzWireStates)Serial.readString().charAt(0);
}
// if(bleSerial.available()) {
// buzzWireStatus = (BuzzWireStates)bleSerial.readString().charAt(0);
// }
switch(buzzWireStatus) {
case BuzzWireStates::READY:
Serial.println("READY");
if (pushbutton.getStateChange()) {
switchGo();
}
if(winWire.getStateChange()){
winWire.resetPushbuttonState();
}
if(buzzWire.getStateChange()) {
buzzWire.resetPushbuttonState();
}
break;
case BuzzWireStates::GO:
Serial.println("GO");
buzz.off();
if (pushbutton.getStateChange()) {
switchReady();
}
if(buzzWire.getStateChange()) {
buzzWiretouch();
}
if(winWire.getStateChange()){
win();
}
if(sevenSegment.timeout()){
lose();
}
break;
case BuzzWireStates::TOUCH:
Serial.println("TOUCH");
buzz.on();
if(sevenSegment.timeout())
lose();
if(buzzWire.getStateChange()) {
buzzWiretouch();
}
break;
case BuzzWireStates::WIN:
Serial.println("WIN");
if(pushbutton.getStateChange()){
switchReset();
}
break;
case BuzzWireStates::LOSE:
Serial.println("LOSE");
buzz.off();
if(pushbutton.getStateChange()){
switchReset();
}
break;
case BuzzWireStates::RESET:
Serial.println("RESET");
sevenSegment.reset();
myChances.reset();
reset();
break;
default:
Serial.println("Code should never enter here");
}
}