Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /////////////////////////////
- // Airsoft Bomb //
- // by Malthe Falkenstjerne //
- /////////////////////////////
- #include <Keypad.h>
- #include <LiquidCrystal.h>
- #define pound 14
- #define NOTE_B0 31
- #define NOTE_C1 33
- #define NOTE_CS1 35
- #define NOTE_D1 37
- #define NOTE_DS1 39
- #define NOTE_E1 41
- #define NOTE_F1 44
- #define NOTE_FS1 46
- #define NOTE_G1 49
- #define NOTE_GS1 52
- #define NOTE_A1 55
- #define NOTE_AS1 58
- #define NOTE_B1 62
- #define NOTE_C2 65
- #define NOTE_CS2 69
- #define NOTE_D2 73
- #define NOTE_DS2 78
- #define NOTE_E2 82
- #define NOTE_F2 87
- #define NOTE_FS2 93
- #define NOTE_G2 98
- #define NOTE_GS2 104
- #define NOTE_A2 110
- #define NOTE_AS2 117
- #define NOTE_B2 123
- #define NOTE_C3 131
- #define NOTE_CS3 139
- #define NOTE_D3 147
- #define NOTE_DS3 156
- #define NOTE_E3 165
- #define NOTE_F3 175
- #define NOTE_FS3 185
- #define NOTE_G3 196
- #define NOTE_GS3 208
- #define NOTE_A3 220
- #define NOTE_AS3 233
- #define NOTE_B3 247
- #define NOTE_C4 262
- #define NOTE_CS4 277
- #define NOTE_D4 294
- #define NOTE_DS4 311
- #define NOTE_E4 330
- #define NOTE_F4 349
- #define NOTE_FS4 370
- #define NOTE_G4 392
- #define NOTE_GS4 415
- #define NOTE_A4 440
- #define NOTE_AS4 466
- #define NOTE_B4 494
- #define NOTE_C5 523
- #define NOTE_CS5 554
- #define NOTE_D5 587
- #define NOTE_DS5 622
- #define NOTE_E5 659
- #define NOTE_F5 698
- #define NOTE_FS5 740
- #define NOTE_G5 784
- #define NOTE_GS5 831
- #define NOTE_A5 880
- #define NOTE_AS5 932
- #define NOTE_B5 988
- #define NOTE_C6 1047
- #define NOTE_CS6 1109
- #define NOTE_D6 1175
- #define NOTE_DS6 1245
- #define NOTE_E6 1319
- #define NOTE_F6 1397
- #define NOTE_FS6 1480
- #define NOTE_G6 1568
- #define NOTE_GS6 1661
- #define NOTE_A6 1760
- #define NOTE_AS6 1865
- #define NOTE_B6 1976
- #define NOTE_C7 2093
- #define NOTE_CS7 2217
- #define NOTE_D7 2349
- #define NOTE_DS7 2489
- #define NOTE_E7 2637
- #define NOTE_F7 2794
- #define NOTE_FS7 2960
- #define NOTE_G7 3136
- #define NOTE_GS7 3322
- #define NOTE_A7 3520
- #define NOTE_AS7 3729
- #define NOTE_B7 3951
- #define NOTE_C8 4186
- #define NOTE_CS8 4435
- #define NOTE_D8 4699
- #define NOTE_DS8 4978
- int Scount = 12; // count seconds
- int Mcount = 10; // count minutes
- int Hcount = 0; // count hours
- int DefuseTimer = 0; // set timer to 0
- long secMillis = 0; // store last time for second add
- long interval = 1000; // interval for seconds
- char password[4]; // number of characters in our password
- int currentLength = 0; //defines which number we are currently writing
- int i = 0;
- char entered[4];
- int ledPin = 4; //red led
- int ledPin2 = 3; //yellow led
- int ledPin3 = 2; //green led
- LiquidCrystal lcd(7,8,10,11,12,13); // the pins we use on the LCD
- const byte ROWS = 4; //four rows
- const byte COLS = 3; //three columns
- char keys[ROWS][COLS] = {
- {'1','2','3'},
- {'4','5','6'},
- {'7','8','9'},
- {'*','0','#'}
- };
- byte rowPins[ROWS] = {5, A5, A4, A2}; //connect to the row pinouts of the keypad
- byte colPins[COLS] = {A1, A0, A3}; //connect to the column pinouts of the keypad
- Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
- void setup(){
- pinMode(ledPin, OUTPUT); // sets the digital pin as output
- pinMode(ledPin2, OUTPUT); // sets the digital pin as output
- pinMode(ledPin3, OUTPUT); // sets the digital pin as output
- pinMode(9,OUTPUT);
- lcd.begin(16, 2);
- Serial.begin(9600);
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("Enter Code: ");
- while (currentLength < 4)
- {
- lcd.setCursor(currentLength + 6, 1);
- lcd.cursor();
- char key = keypad.getKey();
- key == NO_KEY;
- if (key != NO_KEY)
- {
- if ((key != '*')&&(key != '#'))
- {
- lcd.print(key);
- password[currentLength] = key;
- currentLength++;
- tone(NOTE_C6, 200);
- }
- }
- }
- if (currentLength == 4)
- {
- delay(500);
- lcd.noCursor();
- lcd.clear();
- lcd.home();
- lcd.print("You've Entered: ");
- lcd.setCursor(6,1);
- lcd.print(password[0]);
- lcd.print(password[1]);
- lcd.print(password[2]);
- lcd.print(password[3]);
- tone(NOTE_E6, 200);
- delay(3000);
- lcd.clear();
- currentLength = 0;
- }
- }
- void loop()
- {
- timer();
- char key2 = keypad.getKey(); // get the key
- if (key2 == '*')
- {
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("Code: ");
- while (currentLength < 4)
- {
- timer();
- char key2 = keypad.getKey();
- if (key2 == '#')
- {
- currentLength = 0;
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("Code: ");
- }
- else
- if (key2 != NO_KEY)
- {
- lcd.setCursor(currentLength + 7, 0);
- lcd.cursor();
- lcd.print(key2);
- entered[currentLength] = key2;
- currentLength++;
- tone(NOTE_C6, 200);
- delay(100);
- lcd.noCursor();
- lcd.setCursor(currentLength + 6, 0);
- lcd.print("*");
- lcd.setCursor(currentLength + 7, 0);
- lcd.cursor();
- }
- }
- if (currentLength == 4)
- {
- if (entered[0] == password[0] && entered[1] == password[1] && entered[2] == password[2] && entered[3] == password[3])
- {
- lcd.noCursor();
- lcd.clear();
- lcd.home();
- lcd.print("Bomb Defused");
- currentLength = 0;
- digitalWrite(ledPin3, HIGH);
- delay(2500);
- lcd.setCursor(0,1);
- lcd.print("Reset the Bomb");
- delay(1000000);
- }
- else
- {
- lcd.noCursor();
- lcd.clear();
- lcd.home();
- lcd.print("Wrong Password!");
- if (Hcount > 0)
- {
- Hcount = Hcount - 1;
- }
- if (Mcount > 0)
- {
- Mcount = Mcount - 59;
- }
- if (Scount > 0)
- {
- Scount = Scount - 59;
- }
- delay(1500);
- currentLength = 0;
- }
- }
- }
- }
- void timer()
- {
- Serial.print(Scount);
- Serial.println();
- if (Hcount <= 0)
- {
- if ( Mcount < 0 )
- {
- lcd.noCursor();
- lcd.clear();
- lcd.home();
- lcd.print("The Bomb Has ");
- lcd.setCursor (0,1);
- lcd.print("Exploded!");
- while (Mcount < 0)
- {
- digitalWrite(ledPin, HIGH); // sets the LED on
- tone(NOTE_A2, 90);
- delay(100);
- digitalWrite(ledPin, LOW); // sets the LED off
- tone(NOTE_A2, 90);
- delay(100);
- digitalWrite(ledPin2, HIGH); // sets the LED on
- tone(NOTE_A2, 90);
- delay(100);
- digitalWrite(ledPin2, LOW); // sets the LED off
- tone(NOTE_A2, 90);
- delay(100);
- digitalWrite(ledPin3, HIGH); // sets the LED on
- tone(NOTE_A2, 90);
- delay(100);
- digitalWrite(ledPin3, LOW); // sets the LED off
- tone(NOTE_A2, 90);
- delay(100);
- }
- }
- }
- lcd.setCursor (0,1); // sets cursor to 2nd line
- lcd.print ("Timer:");
- if (Hcount >= 10)
- {
- lcd.setCursor (7,1);
- lcd.print (Hcount);
- }
- if (Hcount < 10)
- {
- lcd.setCursor (7,1);
- lcd.write ("0");
- lcd.setCursor (8,1);
- lcd.print (Hcount);
- }
- lcd.print (":");
- if (Mcount >= 10)
- {
- lcd.setCursor (10,1);
- lcd.print (Mcount);
- }
- if (Mcount < 10)
- {
- lcd.setCursor (10,1);
- lcd.write ("0");
- lcd.setCursor (11,1);
- lcd.print (Mcount);
- }
- lcd.print (":");
- if (Scount >= 10)
- {
- lcd.setCursor (13,1);
- lcd.print (Scount);
- }
- if (Scount < 10)
- {
- lcd.setCursor (13,1);
- lcd.write ("0");
- lcd.setCursor (14,1);
- lcd.print (Scount);
- }
- if (Hcount <0)
- {
- Hcount = 0;
- }
- if (Mcount <0)
- {
- Hcount --;
- Mcount = 59;
- }
- if (Scount <1) // if 60 do this operation
- {
- Mcount --; // add 1 to Mcount
- Scount = 59; // reset Scount
- }
- if (Scount > 0) // do this oper. 59 times
- {
- unsigned long currentMillis = millis();
- if(currentMillis - secMillis > interval)
- {
- tone(NOTE_G5, 200);
- secMillis = currentMillis;
- Scount --; // add 1 to Scount
- digitalWrite(ledPin2, HIGH); // sets the LED on
- delay(10); // waits for a second
- digitalWrite(ledPin2, LOW); // sets the LED off
- delay(10); // waits for a second
- //lcd.clear();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement