#include <Keypad.h>
#define LED_gb A4
#define LED_r A5
#define BEEPER 13
#define DEFUSE_NUZKY 12
#define DEFUSE 11
const uint8_t ROWS = 4;
const uint8_t COLS = 3;
char keys[ROWS][COLS] = {
{ '1', '2', '3'},
{ '4', '5', '6'},
{ '7', '8', '9'},
{ '*', '0', '#'}
};
uint8_t colPins[COLS] = { 5, 4, 3}; // Pins connected to C1, C2, C3, C4
uint8_t rowPins[ROWS] = { 9, 8, 7, 6 }; // Pins connected to R1, R2, R3, R4
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
String lock="7355608";
String kod="";
bool plant=false, explosion=false;
float start, blik;
int sekundy=0, power, beep, n=1,defuse=0;
void setup() {
pinMode(A5, OUTPUT);
digitalWrite(A5, LOW);
digitalWrite(DEFUSE_NUZKY, HIGH);
digitalWrite(DEFUSE, HIGH);
Serial.begin(9600);
}
void loop() {
char key = keypad.getKey();
if(plant==0)
{
if (key != NO_KEY)
{
Serial.print(key);
kod+=key;
if(kod.length()>6)
{
if(kod!=lock)
{
Serial.println();
Serial.println("WRONG CODE");
kod="";
}
else
{
plant=1;
start=millis();
blik=millis();
Serial.println();
Serial.println("PLANTED");
}
}
}
}
else
{
if(explosion==0)
{
if((millis()-blik)>beep)
{
blik=millis();
digitalWrite(LED_r, HIGH);
if(sekundy>28)
digitalWrite(LED_gb, HIGH);
tone(BEEPER, 2093);
delay(10);
noTone(BEEPER);
for(float i=255; i>=power;i--)
{
analogWrite(LED_r, i);
if(sekundy>28)
analogWrite(LED_gb, i);
delay(3);
}
digitalWrite(LED_r, LOW);
digitalWrite(LED_gb, LOW);
}
if((millis()-start)>999)
{
sekundy++;
if(digitalRead(DEFUSE)==LOW || digitalRead(DEFUSE_NUZKY)==LOW)
{
Serial.println("defusing");
if(digitalRead(DEFUSE_NUZKY)==LOW)
defuse+=2;
else
defuse++;
if(defuse>10)
{
plant=0;
Serial.println("THE BOMB HAS BEEN DEFUSED");
defuse=1;
sekundy=0;
kod="";
}
}
start=millis();
}
beep=map(sekundy, 0, 34, 1000, 100);
power=map(beep, 1000, 100, 0, 250);
if(sekundy==34)
{
explosion=1;
Serial.println("BUUUM");
tone(BEEPER, 10);
delay(5000);
noTone(BEEPER);
}
}
}
}