Prop bomb (5 / 6 steg)
Steg 5: Ladda upp koden
/ * Airsoft bombarderar
Version 1.1Creators:
Jaga Cooley & & & & & & & & & & & &
Joey Meyer * /
#include < Keypad.h > #include < LiquidCrystal.h >
#include < Tone.h >
#define pund 14
Tone tone1; int Scount = 0; antal sekunder
int Mcount = 0; räkna minutesint Hcount = 0; räkna timmar
int Dcount = 0; räkna daysint val = 0;
lång secMillis = 0; lagra förra gången för andra addlong intervall = 1000; intervallet i sekunder
röding lösenord [4]; int currentLength = 0;
int jag = 0; char in [4].
int ledPin = 3; röda lightint ledPin2 = 4; grönt ljus
LiquidCrystal lcd (7,8,10,11,12,13), const byte rader = 4; fyra rader
CONST byte COLS = 3; tre columnschar nycklar [rader] [COLS] = {
{'1', '2', '3'}, {'4', '5',' 6'},
{'7','8','9'},{'*','0','#'}
};
byte rowPins [rader] = {18, 2, 14, 16}; ansluta till rad Stifttilldelningar för keypadbyte colPins [COLS] = {17, 19, 15}; ansluta till kolumn Stifttilldelningar för knappsatsen
Tangentbordet knappsatsen = knappsatsen (makeKeymap(keys), rowPins, colPins, rader, kolumner);
void setup() {
pinMode (ledPin, produktionen); Anger den digitala stiftet som outputpinMode (ledPin2, produktionen); Anger den digitala pin som utdata
tone1.BEGIN (9), lcd.begin (16, 2);
Serial.BEGIN(9600);LCD.Clear();
lcd.setCursor (0,0), lcd.print ("Ange kod:");
samtidigt (currentLength < 4) {
lcd.setCursor (currentLength + 6, 1);lcd.cursor();
char nyckel = keypad.getKey (); nyckel == NO_KEY;
om (nyckel! = NO_KEY) {
LCD.Print (nyckel), lösenord [currentLength] = nyckel;
currentLength++;delay(200);
}}
om (currentLength == 4) {
lcd.noCursor();lcd.clear();
LCD.Home (), lcd.print ("du har angett:");
lcd.setCursor(6,1);lcd.print(password[0]);
LCD.Print(Password[1]);LCD.Print(Password[2]);
LCD.Print(Password[3]);Delay(3000);
LCD.Clear (); currentLength = 0;
}}
void loop() {
char key2 = keypad.getKey(); få keylcd.setCursor(0,0);
timer (), om (key2! = NO_KEY)
{medan (key2 == NO_KEY)
{key2 = keypad.getKey();
} om (key2! = NO_KEY)
{lcd.clear();
lcd.setCursor (0,0), lcd.print ("Ange kod:");
samtidigt (currentLength < 4) {
lcd.setCursor (currentLength + 6, 1);lcd.cursor();
char key2 = keypad.getKey (); om (key2! = NO_KEY)
{lcd.print(key2);
angett [currentLength] = key2; currentLength ++;
Delay(200);LCD.noCursor();
lcd.setCursor (currentLength + 5, 1);lcd.print("*");
lcd.setCursor (currentLength + 6, 1);lcd.cursor();
}}
om (currentLength == 4) {
om (angett [0] == lösenord [0] & & in [1] == lösenord [1] & & in [2] == lösenord [2] & & in [3] == password[3]) {
lcd.noCursor();lcd.clear();
LCD.Home (), lcd.print ("Defused");
currentLength = 0;delay(2500);
lcd.setCursor (0,1), lcd.print ("Reset bomben");
} annat
{lcd.noCursor();
LCD.Clear();LCD.Home();
LCD.Print ("fel"); lcd.setCursor(0,1);
LCD.Print ("Add - 1:30"), om (Mcount < 14)
{Mcount = Mcount + 1.
} om (Scount < 59)
{Scount = Scount + 30.
} delay(1500);
currentLength = 0;}
}}
}}
void timer() {
om (Mcount > = 15) {
medan (Mcount > = 15) {
lcd.noCursor();lcd.clear();
LCD.Home (); lcd.print("! BoOm! ");
tone1.Play (NOTE_A2, 200), digitalWrite (ledPin, hög); anger LED på
tone1.Play (NOTE_A2, 200);delay(10); väntar på en sekund
digitalWrite (ledPin, låg); Anger den LED offtone1.play (NOTE_A2, 200);
Delay(10); väntar på en seconddigitalWrite (ledPin2, hög); anger LED på
tone1.Play (NOTE_A2, 200);delay(10); väntar på en sekund
digitalWrite (ledPin2, låg); Anger den LED offtone1.play (NOTE_A2, 200);
Delay(10); väntar på en secondchar key4 = keypad.getKey();
om (key4! = NO_KEY) {
medan (key4 == NO_KEY) {
key4 = keypad.getKey();}
om (key4 = "#") {
LCD.Clear (), lcd.print ("Reset bomben");
}}
} om (Mcount == 60) / / om Mcount är 60 göra denna operation
{//delay (32); / / bra plats Fininställning Timing
Mcount = 0; återställa McountHcount ++;
} om (Hcount > 23)
{Dcount ++;
Hcount = 0; måste du återställa Hcount till "0" efter 24 timmar}
lcd.setCursor (0,1); ställer markören till 2: a linelcd.print ("Timer:");
LCD.Print (Dcount);lcd.print (":");
LCD.Print (Hcount);lcd.print (":");
LCD.Print (Mcount);lcd.print (":");
LCD.Print (Scount);
om (Scount > 59) / / om 60 gör denna operation {
Mcount ++; lägga till 1 i McountScount = 0; återställa Scount
fördröjning (58). förändringar ms per minut}
om (Scount < 60) / / göra denna oper. 59 gånger {
osignerade långa currentMillis = millis (), //delay (988); ändra en = 60 ms en min
om (currentMillis - secMillis > intervall) {
tone1.Play (NOTE_G5, 200); secMillis = currentMillis;
Scount ++; lägga till 1 i ScountdigitalWrite (ledPin2, hög); anger LED på
Delay(10); väntar på en seconddigitalWrite (ledPin2, låg); framhäver LED
Delay(10); väntar en sekund}
}}