////CS-GO C4 PROP by Halil YILMAZ////
//////////////HATEK//////////////////
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
unsigned long BipMillis = 0;
unsigned long SonMillis;
unsigned long CozumMillis = 0;
unsigned long BasimAni = 0;
unsigned long Basilma = 0;
unsigned long SifreCozumMillis = 0;
int butVal = 0;
int button = 10;
int CozumSuresi = 10;
int CozulmeD = 0;
const int b = 11; //Buzzer pini
int a = 2709; //Sürekli çalan bip notası
int B = 1046; //Sonda seri çalan bip notası
int c = 5; //Sonda seri çalan bip sayısının değişkeni
int BipKilit = 0; //Defuse sesinin sadece 1 kere çalmasını sağlamak için
int EkranKilit1 = 0; //Ekranı sürekli olarak sil-yaz yapmamak için
int EkranKilit2 = 0;
int EkranKilit3 = 0;
int Bekleme = 1000;
char kod[7];
char kod2[7] = {7,3,5,5,6,0,8};
int yer = 0;
int kon = 3;
int say = 0;
int temiz = 0;
const uint8_t ROWS = 4;
const uint8_t COLS = 4;
char keys[ROWS][COLS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
uint8_t colPins[COLS] = { 5, 4, 3, 2 };
uint8_t rowPins[ROWS] = { 9, 8, 7, 6 };
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
int krksay = 0;
int konum = 15;
void setup() {
pinMode(button, INPUT);
pinMode(b, OUTPUT);
lcd.begin(16,2);
lcd.backlight();
lcd.clear();
lcd.setCursor(3,0);
lcd.print("* * * * * * *");
////Açılış Sesi////
tone(b,1686);
delay(70);
noTone(b);
delay(70);
tone(b,1686);
delay(70);
noTone(b);
//////////////////
/*////LCD Şifre Animasyon////
lcd.setCursor(3,0);
lcd.print("* * * * * * *");
delay(500);
lcd.clear();
lcd.setCursor(3,0);
lcd.print("* * * * * * 7");
delay(500);
lcd.clear();
lcd.setCursor(3,0);
lcd.print("* * * * * 7 3");
delay(500);
lcd.clear();
lcd.setCursor(3,0);
lcd.print("* * * * 7 3 5");
delay(500);
lcd.clear();
lcd.setCursor(3,0);
lcd.print("* * * 7 3 5 5");
delay(500);
lcd.clear();
lcd.setCursor(3,0);
lcd.print("* * 7 3 5 5 6");
delay(500);
lcd.clear();
lcd.setCursor(3,0);
lcd.print("* 7 3 5 5 6 0");
delay(500);
lcd.clear();
lcd.setCursor(3,0);
lcd.print("7 3 5 5 6 0 3");
delay(500);
///////////////////////////*/
}
void loop() {
butVal = digitalRead(button);
SonMillis = millis();
char key = keypad.getKey();
lcd.setCursor(konum,0);
if (key != NO_KEY) {
tone(b,a);
delay(70);
noTone(b);
kod[krksay] = key;
krksay += 1;
if(key != '#'){
for(int i = 0; i <= 7; i++){
lcd.print(kod[i]);
lcd.print(" ");
delay(10);
}
konum -= 2;
}
}
if(kod[0] == '7' && kod[1] == '3' && kod[2] == '5' && kod[3] == '5' && kod[4] == '6' && kod[5] == '0' && kod[6] == '8'){
if(CozulmeD == 0){
if(EkranKilit1 == 0){
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Bomba Kuruldu!");
EkranKilit1 = 1;
}
if(SonMillis - BipMillis >= Bekleme && Bekleme > 207){
tone(b,a);
delay(125);
noTone(b);
//SonMillis = 0;
BipMillis = SonMillis;
Bekleme -=13;
if(Bekleme == 207){
Bekleme = 103;
for(B; B <= 2000 ; B++){
delay(1);
tone(b,B);
if(B == 2000){
noTone(b);
for(c; c>= 0; c--){
tone(b,2000);
delay(70);
noTone(b);
delay(70);
}
}
}
}
if(Bekleme == 103){
CozulmeD = 1;
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Bomba Patladi!");
delay(3000);
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Teroristler");
lcd.setCursor(4,1);
lcd.print("Kazandi");
}
}
}
if(butVal == HIGH && BasimAni == 0){
BasimAni = millis();
}
if(butVal == LOW && BasimAni != 0 && CozulmeD == 0){
lcd.clear();
BasimAni = 0;
Basilma = 0;
CozumSuresi = 10;
EkranKilit1 = 0;
BipKilit = 0;
temiz = 0;
}
if(butVal == HIGH && BasimAni != 0 && CozulmeD == 0){
Basilma = millis() - BasimAni;
if(SonMillis - SifreCozumMillis >= 240){
SifreCozumMillis = SonMillis;
say +=1;
lcd.setCursor(kon,0);
lcd.print(say);
if(say == 10){
say = 0;
}
if(say == kod2[yer]){
say = -1;
kon += 2;
yer += 1;
}
}
if(SonMillis - CozumMillis >= 1000 && CozumSuresi >= 0){
if(temiz == 0){
lcd.clear();
temiz = 1;
lcd.setCursor(3,0);
lcd.print("* * * * * * *");
}
////Çözüm Sesi////
if(BipKilit == 0){
tone(b,1686);
delay(70);
noTone(b);
delay(70);
tone(b,1686);
delay(70);
noTone(b);
delay(70);
tone(b,1686);
delay(70);
noTone(b);
BipKilit = 1;
}
/////////////////
lcd.setCursor(4,1);
lcd.print("Cozuluyor:");
if(CozumSuresi == 10){
lcd.print(CozumSuresi);
}
if(CozumSuresi < 10){
lcd.print("0");
lcd.print(CozumSuresi);
}
CozumSuresi -= 1;
CozumMillis = SonMillis;
}
if(Basilma >= 10500){
CozulmeD = 1;
if(EkranKilit2 == 0){
lcd.clear();
EkranKilit2 = 1;
}
lcd.setCursor(1,0);
lcd.print("Bomba Cozuldu!");
delay(3000);
lcd.clear();
lcd.print("Anti-Teroristler");
lcd.setCursor(4,1);
lcd.print("Kazandi");
}
}
}
}