#define yellow 13 //yellow LED//
#define Speaker 12 //Buzzer//
#define red 8 //Red LED//
#define Green 7 //Green LED//
#define greenB 2 //Green Button....Button for Disarm//
#define redB 3 //Red Button...Button for arming//
#define blue1 11 //Blue LED seq1//
#define blue2 10 //Blue LED seq2//
#define blue3 9 //Blue LED seq3//
#define blue4 6 //Blue LED seq4//
#define blue5 5 //Blue LED seq5//
#define selector A1 //potentiometer...timer//
unsigned long times; //Bomb timer//
unsigned long pause; //Pause current bomb time//
unsigned long volts;
float delays2 = 500;
void setup() {
Serial.begin(9600);
pinMode(selector, INPUT);
pinMode(blue1, OUTPUT);
pinMode(blue2, OUTPUT);
pinMode(blue3, OUTPUT);
pinMode(blue4, OUTPUT);
pinMode(blue5, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(Speaker, OUTPUT);
pinMode(red, OUTPUT);
pinMode(Green, OUTPUT);
pinMode(greenB, INPUT_PULLUP);
pinMode(redB, INPUT_PULLUP);
int sensorValue = analogRead(selector);
float voltage = sensorValue * (5.0 / 1023.0);
Serial.println(voltage);
times = 500;
volts = voltage;
myfunction();
}
void myfunction() {
delays2 = delays2/2.0;
digitalWrite(Green, HIGH);
tone(Speaker, 2000, delays2);
delay(delays2);
digitalWrite(Green, LOW);
delay(delays2);
digitalWrite(Green, HIGH);
tone(Speaker, 2000, delays2);
delay(delays2);
digitalWrite(Green, LOW);
delay(delays2);
digitalWrite(Green, HIGH);
tone(Speaker, 2000, delays2);
delay(delays2);
digitalWrite(Green, LOW);
delay(delays2);
digitalWrite(Green, HIGH);
tone(Speaker, 2000, delays2);
delay(delays2);
digitalWrite(Green, LOW);
delay(delays2);
}
void loop() {
Serial.println(volts);
//Serial.print(times);//
//start//
//Bomb armed early count //
if (times < 50*volts && digitalRead(Green) == LOW){
times += 1;
digitalWrite(yellow, HIGH);
for(int hz = 450; hz < 700; hz++){
tone(Speaker, hz, 50);
delay(4);
digitalWrite(yellow, LOW);
}
}
//Bomb armed near activtation//
if(times <= 66*volts && times >= 50*volts ){
times += 1;
digitalWrite(yellow, HIGH);
for(int hz = 450; hz < 700; hz++){
tone(Speaker, hz, 50);
delay(2);
digitalWrite(yellow, LOW);
}
}
//Bomb activated GAME END//
if (times == 66*volts+1){
digitalWrite(red,HIGH);
// Whoop up
for(int hz = 440; hz < 1000; hz++){
tone(Speaker, hz, 50);
delay(5);
}
}
//END//
//Green Button Pressed for Disarm//
if (digitalRead(greenB) == LOW && digitalRead(Green) == LOW && digitalRead(red) == LOW){
checkdis();
}
//Green light on... bomb deactivated//
if (times >= 500) {
times = 500;
digitalWrite(Green, HIGH);
}
//Red BUtton Pressed for Arming//
if(digitalRead(redB) == LOW && digitalRead(Green) == HIGH){
checkarm();
}
}
//Disarm complete//
void defuse() {
times = 500;
digitalWrite(Green, HIGH);
tone(Speaker, 2000, 100);
delay(100);
digitalWrite(Green, LOW);
digitalWrite(red, HIGH);
tone(Speaker, 1000, 100);
delay(100);
digitalWrite(red, LOW);
digitalWrite(yellow, HIGH);
tone(Speaker, 2000, 100);
delay(100);
digitalWrite(yellow, LOW);
delay(100);
digitalWrite(Green, HIGH);
}
//Arming complete//
void arm(){
times = 0;
delays2 = 500;
delays2 = delays2/2.0;
digitalWrite(red, HIGH);
tone(Speaker, 2000, delays2);
delay(delays2);
digitalWrite(red, LOW);
delay(delays2);
digitalWrite(red, HIGH);
tone(Speaker, 2000, delays2);
delay(delays2);
digitalWrite(red, LOW);
delay(delays2);
digitalWrite(red, HIGH);
tone(Speaker, 2000, delays2);
delay(delays2);
digitalWrite(red, LOW);
delay(delays2);
digitalWrite(red, HIGH);
tone(Speaker, 2000, delays2);
delay(delays2);
digitalWrite(red, LOW);
delay(delays2);
}
//Checking for button held press during disarm//
void checkdis() {
pause = times;
delay(200);
if(digitalRead(greenB) == LOW){
digitalWrite(blue1, HIGH);
tone(Speaker, 1000, 50);
pause = times;
delay(500);
}else{
restart();
}
if(digitalRead(greenB) == LOW && digitalRead(blue1) == HIGH){
times += 1;
digitalWrite(blue2, HIGH);
tone(Speaker, 1000, 50);
digitalWrite(blue1, LOW);
pause = times;
delay(500);
}else{
restart();
}
if(digitalRead(greenB) == LOW && digitalRead(blue2) == HIGH){
digitalWrite(blue3, HIGH);
tone(Speaker, 1000, 50);
digitalWrite(blue2, LOW);
pause = times;
delay(500);
}else{
restart();
}
if(digitalRead(greenB) == LOW && digitalRead(blue3) == HIGH){
times += 1;
digitalWrite(blue4, HIGH);
tone(Speaker, 1000, 50);
digitalWrite(blue3, LOW);
pause = times;
delay(500);
}else{
restart();
}
if(digitalRead(greenB) == LOW && digitalRead(blue4) == HIGH){
digitalWrite(blue5, HIGH);
tone(Speaker, 1000, 50);
digitalWrite(blue4, LOW);
pause = times;
delay(500);
digitalWrite(blue1, LOW);
digitalWrite(blue2, LOW);
digitalWrite(blue3, LOW);
digitalWrite(blue4, LOW);
digitalWrite(blue5, LOW);
delay(100);
digitalWrite(blue1, HIGH);
digitalWrite(blue2, HIGH);
digitalWrite(blue3, HIGH);
digitalWrite(blue4, HIGH);
digitalWrite(blue5, HIGH);
delay(100);
digitalWrite(blue1, LOW);
digitalWrite(blue2, LOW);
digitalWrite(blue3, LOW);
digitalWrite(blue4, LOW);
digitalWrite(blue5, LOW);
delay(100);
digitalWrite(blue1, HIGH);
digitalWrite(blue2, HIGH);
digitalWrite(blue3, HIGH);
digitalWrite(blue4, HIGH);
digitalWrite(blue5, HIGH);
delay(100);
digitalWrite(blue1, LOW);
digitalWrite(blue2, LOW);
digitalWrite(blue3, LOW);
digitalWrite(blue4, LOW);
digitalWrite(blue5, LOW);
defuse();
}else{
restart();
}
}
//Checking button held press for arming//
void checkarm() {
delay(200);
if(digitalRead(redB) == LOW){
digitalWrite(blue1, HIGH);
tone(Speaker, 1000, 50);
delay(500);
}else{
cancel();
}
if(digitalRead(redB) == LOW && digitalRead(blue1) == HIGH){
digitalWrite(blue2, HIGH);
tone(Speaker, 1000, 50);
digitalWrite(blue1, LOW);
delay(500);
}else{
cancel();
}
if(digitalRead(redB) == LOW && digitalRead(blue2) == HIGH){
digitalWrite(blue3, HIGH);
tone(Speaker, 1000, 50);
digitalWrite(blue2, LOW);
delay(500);
}else{
cancel();
}
if(digitalRead(redB) == LOW && digitalRead(blue3) == HIGH){
digitalWrite(blue4, HIGH);
tone(Speaker, 1000, 50);
digitalWrite(blue3, LOW);
delay(500);
}else{
cancel();
}
if(digitalRead(redB) == LOW && digitalRead(blue4) == HIGH){
digitalWrite(blue5, HIGH);
tone(Speaker, 1000, 50);
digitalWrite(blue4, LOW);
delay(500);
digitalWrite(blue1, LOW);
digitalWrite(blue2, LOW);
digitalWrite(blue3, LOW);
digitalWrite(blue4, LOW);
digitalWrite(blue5, LOW);
delay(100);
digitalWrite(blue1, HIGH);
digitalWrite(blue2, HIGH);
digitalWrite(blue3, HIGH);
digitalWrite(blue4, HIGH);
digitalWrite(blue5, HIGH);
delay(100);
digitalWrite(blue1, LOW);
digitalWrite(blue2, LOW);
digitalWrite(blue3, LOW);
digitalWrite(blue4, LOW);
digitalWrite(blue5, LOW);
delay(100);
digitalWrite(blue1, HIGH);
digitalWrite(blue2, HIGH);
digitalWrite(blue3, HIGH);
digitalWrite(blue4, HIGH);
digitalWrite(blue5, HIGH);
delay(100);
digitalWrite(blue1, LOW);
digitalWrite(blue2, LOW);
digitalWrite(blue3, LOW);
digitalWrite(blue4, LOW);
digitalWrite(blue5, LOW);
digitalWrite(Green, LOW);
arm();
}else{
cancel();
}
}
//Failed Disarm//
void restart(){
Serial.println("button released");
digitalWrite(blue1, LOW);
digitalWrite(blue2, LOW);
digitalWrite(blue3, LOW);
digitalWrite(blue4, LOW);
digitalWrite(blue5, LOW);
times = pause;
}
//Failed Arming//
void cancel(){
Serial.println("button released");
digitalWrite(blue1, LOW);
digitalWrite(blue2, LOW);
digitalWrite(blue3, LOW);
digitalWrite(blue4, LOW);
digitalWrite(blue5, LOW);
}