Étape 5: Télécharger le code
/ * Bombe Airsoft
Version 1.1Creators :
Chasser Cooley & & & & & & & & & & & &
Joey Meyer * /
#include < Keypad.h > #include < LiquidCrystal.h >
#include < Tone.h >
#define livre 14
Ton tone1 ; int Scount = 0 ; secondes de comte
int Mcount = 0 ; compter minutesint Hcount = 0 ; nombre heures
int CpteDom = 0 ; compter daysint val = 0 ;
long secMillis = 0 ; stocker la dernière fois à intervalle de seconde addlong = 1000 ; intervalle pour secondes
mot de passe de char [4]; int currentLength = 0 ;
int i = 0; char entré [4] ;
int ledPin = 3 ; lightint rouge ledPin2 = 4 ; feu vert
Innovente lcd (7,8,10,11,12,13); const byte rangs = 4 ; quatre rangées
const byte COLS = 3 ; trois clés de columnschar [lignes] [colonnes] = {}
{« 1 », « 2 », « 3 »}, {'4', « 5 »,' 6'},
{'7','8','9'},{'*','0','#'}
};
rowPins Byte [rangs] = {2, 14, 18, 16} ; se connecter pour le brochage de la ligne de la colPins de keypadbyte [CDL] = {17, 19, 15} ; se connecter à la liste des broches colonne du clavier
Clavier clavier = clavier (makeKeymap(keys), rowPins, colPins, lignes, colonnes) ;
void setup() {}
pinMode (ledPin, sortie) ; définit la broche numérique sous la forme outputpinMode (ledPin2, sortie) ; définit la broche numérique en sortie
tone1.Begin (9), lcd.begin (16, 2) ;
Serial.Begin(9600);LCD.Clear() ;
lcd.setCursor (0,0); lcd.print ("entrez le Code:") ;
alors que {(currentLength < 4)
lcd.setCursor (currentLength + 6, 1);lcd.cursor() ;
clé char = keypad.getKey (); clé == NO_KEY ;
Si (touche! = NO_KEY) {}
LCD.Print (key); mot de passe [currentLength] = clé ;
currentLength++;delay(200) ;
}}
Si (currentLength == 4) {}
lcd.noCursor();lcd.clear() ;
LCD.Home (); lcd.print ("vous avez saisi:") ;
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 Clé2 = keypad.getKey() ; Téléchargez le keylcd.setCursor(0,0) ;
minuterie (); if (key2! = NO_KEY)
{Si (key2 == NO_KEY)
{Clé2 = keypad.getKey() ;
} Si (key2! = NO_KEY)
{lcd.clear() ;
lcd.setCursor (0,0); lcd.print ("entrez le Code:") ;
alors que {(currentLength < 4)
lcd.setCursor (currentLength + 6, 1);lcd.cursor() ;
char Clé2 = keypad.getKey (); if (key2! = NO_KEY)
{lcd.print(key2) ;
entré [currentLength] = key2 ; currentLength ++ ;
Delay(200);LCD.noCursor() ;
lcd.setCursor (currentLength + 5, 1);lcd.print("*") ;
lcd.setCursor (currentLength + 6, 1);lcd.cursor() ;
}}
Si (currentLength == 4) {}
Si (entré [0] == password [0] & & entrées [1] == mot de passe [1] & & entrées [2] == password [2] & & entrées [3] == {password[3])}
lcd.noCursor();lcd.clear() ;
LCD.Home (); lcd.print ("Defused") ;
currentLength = 0;delay(2500) ;
lcd.setCursor (0,1); lcd.print ("Reset la bombe") ;
} else
{lcd.noCursor() ;
LCD.Clear();LCD.Home() ;
LCD.Print ("mauvais"); lcd.setCursor(0,1) ;
LCD.Print ("Add - 01:30"); if (Mcount < 14)
{Mcount = Mcount + 1 ;
} Si (Scount < 59)
{Scount = Scount + 30 ;
} delay(1500) ;
currentLength = 0;}
}}
}}
timer() Sub {}
Si (Mcount > = 15) {}
tandis que (Mcount > = 15) {}
lcd.noCursor();lcd.clear() ;
LCD.Home (); lcd.print("! BoOm ! ");
tone1.Play (NOTE_A2, 200); digitalWrite (ledPin, HIGH) ; définit la LED sur
tone1.Play (NOTE_A2, 200);delay(10) ; attend une seconde
digitalWrite (ledPin, basse) ; définit la LED offtone1.play (NOTE_A2, 200) ;
Delay(10) ; attend un seconddigitalWrite (ledPin2, HIGH) ; définit la LED sur
tone1.Play (NOTE_A2, 200);delay(10) ; attend une seconde
digitalWrite (ledPin2, basse) ; définit la LED offtone1.play (NOTE_A2, 200) ;
Delay(10) ; attend un key4 secondchar = keypad.getKey() ;
Si (key4! = NO_KEY) {}
même si (key4 == NO_KEY) {}
Key4 = keypad.getKey();}
Si (key4 = « # ») {}
LCD.Clear (); lcd.print ("Reset la bombe") ;
}}
} Si (Mcount == 60) / / si Mcount est 60 faire cette opération
{//delay (32); / / le bon endroit pour peaufiner le chronométrage
Mcount = 0 ; réinitialiser le McountHcount ++ ;
} Si (Hcount > 23)
{CpteDom ++ ;
Hcount = 0 ; vous devrez réinitialiser Hcount "0" après 24h}
lcd.setCursor (0,1) ; définit le curseur au 2ème linelcd.print ("Timer:") ;
LCD.Print (Dcount);lcd.print (":") ;
LCD.Print (Hcount);lcd.print (":") ;
LCD.Print (Mcount);lcd.print (":") ;
LCD.Print (Scount) ;
Si (Scount > 59) / / si 60 faire cette opération {
Mcount ++ ; Ajouter 1 à McountScount = 0 ; réinitialiser Scount
retard (58) ; change ms / min}
Si (Scount < 60) / / do cette oper. {} 59 fois
unsigned long currentMillis = millis (); //delay (988) ; change d’une = 60 ms a min
Si (currentMillis - secMillis > intervalle) {}
tone1.Play (NOTE_G5, 200); secMillis = currentMillis ;
Scount ++ ; Ajouter 1 à ScountdigitalWrite (ledPin2, HIGH) ; définit la LED sur
Delay(10) ; attend un seconddigitalWrite (ledPin2, basse) ; la LED se met
Delay(10) ; attend une seconde}
}}