#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <Keypad.h>
#include <EEPROM.h>
#include "pitches.h"
#include "ENLanguage.h"
//#include "ESLanguage.h"
// KEYPAD
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] = { 26, 25, 33, 32 }; // Pins connected to C1, C2, C3, C4
uint8_t rowPins[ROWS] = { 13, 12, 14, 27 }; // Pins connected to R1, R2, R3, R4
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// LCD
#define LCD_COLS 16 // 16 cols lcd
#define LCD_ROWS 2 // 2 files lcd
LiquidCrystal_I2C lcd(0x27, LCD_COLS, LCD_ROWS);
/*#define BT_UP 34 // Blue Button
#define BT_DOWN 35 // Yellow Button
#define BT_SEL 4 // Green Button
#define BT_CANCEL 2 // Red Button*/
#define BT_UP 'A'
#define BT_DOWN 'B'
#define BT_SEL '*'
#define BT_CANCEL '#'
#define LED_RED 18
#define LED_GREEN 19
//#define PinTone 5
#define tonepin 5
unsigned short timeCalcVar = 0;
short minutes = 1;
short seconds = 30;
short mseconds = 0;
const int interval = 1000;
int blinktime = 1000;
unsigned long previousMillis = 0;
int ledState = LOW;
int MenSel = 0;
byte TIMEOUTLCD = 25;
boolean ENDGAME = false;
boolean ENDSABOTAGE = false;
char password[] = "33333333";
boolean PasswordActivated = false;
boolean ViewPasswordActivated = false;
//short DelayKey = 300; // Delay keys menu
#define mosfet 15
#define tonoPitido 3000
#define tonoAlarma1 700
#define tonoAlarma2 2600
#define tonoActivada 1330
#define errorTone 100
#define MOSFET_TIME 1000
boolean MOSFETActivated = false;
boolean SoundActivated = true;
//TIME INTS
/*int GAMEHOURS = 0;*/
byte GAMEMINUTES = 45;
byte BOMBMINUTES = 1;
byte ACTIVATESECONDS = 5;
byte HOLD_TIME = 200;
void setup() {
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(mosfet, OUTPUT);
pinMode(tonepin, OUTPUT);
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_GREEN, HIGH);
Serial.begin(9600);
//Serial.begin(115200);
lcd.init();
lcd.backlight();
pinMode(BT_UP, INPUT_PULLUP);
pinMode(BT_DOWN, INPUT_PULLUP);
pinMode(BT_SEL, INPUT_PULLUP);
pinMode(BT_CANCEL, INPUT_PULLUP);
byte bar1[8] = {
B10000,
B10000,
B10000,
B10000,
B10000,
B10000,
B10000,
B10000
};
byte bar2[8] = {
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
B11000
};
byte bar3[8] = {
B11100,
B11100,
B11100,
B11100,
B11100,
B11100,
B11100,
B11100
};
byte bar4[8] = {
B11110,
B11110,
B11110,
B11110,
B11110,
B11110,
B11110,
B11110
};
byte bar5[8] = {
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111
};
byte up[8] = {
B00100,
B01110,
B11111,
B11111,
B00000,
B00000,
B00000,
B00000
};
byte down[8] = {
B00000,
B00000,
B00000,
B00000,
B11111,
B11111,
B01110,
B00100
};
byte right[8] = {
B10000,
B11000,
B11100,
B11110,
B11110,
B11100,
B11000,
B10000
};
lcd.createChar(0, bar1);
lcd.createChar(1, bar2);
lcd.createChar(2, bar3);
lcd.createChar(3, bar4);
lcd.createChar(4, bar5);
lcd.createChar(5, up);
lcd.createChar(6, down);
lcd.createChar(7, right);
Inicursor();
lcd.write(7); // Flecha derecha
lcd.setCursor(1, 0);
lcd.print(MSG_LOADING);
GameOfThrones();
//delay(2000);
Inicursor();
Animacion_texto("SORIBOMB v1.0B", 250, 0);
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, LOW);
}
bool isTime(unsigned short timeCalcVar, unsigned short iTime, unsigned short fTime) {
if (timeCalcVar >= iTime && timeCalcVar <= fTime) {
return true;
}
else {
return false;
}
}
void loop() {
/*unsigned long currentMillis = millis();
timeCalcVar = (millis()) % blinktime;
if (digitalRead(BT_UP) == LOW) {
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_GREEN, LOW);
}
if (digitalRead(BT_DOWN) == LOW) {
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, HIGH);
}
if (digitalRead(BT_SEL) == LOW) {
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_GREEN, HIGH);
}
if (digitalRead(BT_CANCEL) == LOW) {
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, LOW);
}*/
//mseconds = random(0, 100);
/*mseconds = 999;
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
lcd.setCursor(0, 1);
//PrintTime(minutes, seconds, 999);
seconds--;
if (seconds < 0) {
seconds = 59;
minutes--;
}
if (minutes < 0) {
minutes = 59;
}
}*/
//Serial.println("Vamos");
MenSel = MenuPrincipal(MenSel); // pos menu
//Inicursor();
//lcd.print("SELECT 1: ");
//lcd.print(MenSel);
//Serial.print("Select 1: ");
//Serial.println(MenSel);
if (MenSel == 99) MenSel = 1;
//delay(1000);
switch (MenSel) {
case 1:
CounterStrike();
break;
case 2:
Sabotage();
break;
case 3:
Domination();
break;
case 4:
MenuConfig(1);
//lcd.print("SELECT 2: ");
//lcd.print(MenSel);
//Serial.print("Select 2: ");
//Serial.println(MenSel);
//MenSel = 4;
break;
case 5:
/*MsgTimeCenter(MSG_SURE, 0, false);
TrueFalse(5000);*/
Factory_Reset();
MenSel = 5;
break;
}
delay(1000);
}