//#include <Wire.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
const byte ROWS = 4;
const byte COLS = 4;
int pressed = 0;
int menu = 1;
int pos = 5;
int spos = 0;
int buzz = 19;
int setting = 0;
String password;
String Rpassword = "112233";
int daccess = 0;
char customKey;
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
// uint8_t colPins[COLS] = { 1, 0, 3, 2 };
// uint8_t rowPins[ROWS] = { 4, 5, 6, 7 };
byte rowPins[ROWS] = {13, 12, 14, 27};
byte colPins[COLS] = {26, 25, 33, 32};
Keypad customKeypad = Keypad (makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
int sec, Min, hour, day, month, year;
String ss, mm, hh, dd, MM, yy;
int sss, mmm, hhh, ddd, MMM, yyy;
int s1 = 0;
int s2 = 0;
int s3 = 0;
int s4 = 0;
float TEMP;
float HUMI;
String DATE = "09:07:2024";
String TIME = "10:45:02";
String all;
unsigned long PT = 0;
int lcdColumns = 20;
int lcdRows = 4;
int disp = 0;
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
lcd.init();
lcd.backlight();
pinMode(buzz, OUTPUT);
}
void settings() {
digitalWrite(buzz, HIGH);
delay(100);
digitalWrite(buzz, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
lcd.setCursor(0, 1);
lcd.print(" SETTIME (SS:MM:HH) ");
while (setting == 1) {
customKey = customKeypad.getKey();
if (customKey) {
digitalWrite(buzz, HIGH);
delay(100);
digitalWrite(buzz, LOW);
// if (customKey != '*' && customKey != '#') {
if (customKey == '*' || customKey == '#' || customKey == 'A' || customKey == 'B' || customKey == 'C' || customKey == 'D') {
alert();
}
else {
pressed++;
spos++;
Serial.println(spos);
Serial.println(pressed);
if (spos <= 8) {
lcd.setCursor(0, 0);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
lcd.setCursor(0, 1);
lcd.print(" SETTIME (SS:MM:HH) ");
lcd.setCursor(spos, 2);
lcd.print(customKey);
delay(200);
lcd.setCursor(0, 3);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
if (spos == 8) {
spos = 9;
lcd.setCursor(0, 0);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
lcd.setCursor(0, 1);
lcd.print("SETDATE (DD:MM:YYYY)");
lcd.setCursor(spos - 9, 2);
lcd.print(" ");
delay(200);
lcd.setCursor(0, 3);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
// pressed = 0;
}
}
else {
Serial.println(spos);
Serial.println(pressed);
lcd.setCursor(0, 0);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
lcd.setCursor(0, 1);
lcd.print("SETDATE (DD:MM:YYYY)");
lcd.setCursor(spos - 9, 2);
lcd.print(customKey);
delay(200);
lcd.setCursor(0, 3);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
}
}
if (pressed <= 2) {
ss.concat(customKey);
}
else if (pressed > 2 && pressed <= 4) {
mm.concat(customKey);
}
else if (pressed > 4 && pressed <= 6) {
hh.concat(customKey);
}
else if (pressed > 6 && pressed <= 8) {
dd.concat(customKey);
}
else if (pressed > 8 && pressed <= 10) {
MM.concat(customKey);
}
else if (pressed > 10 && pressed <= 14) {
yy.concat(customKey);
}
}
if (spos == 2) {
spos++;
lcd.setCursor(spos, 2);
lcd.print(":");
}
else if (spos == 5) {
spos++;
lcd.setCursor(spos, 2);
lcd.print(":");
}
else if (spos == 11) {
spos++;
lcd.setCursor(spos - 9, 2);
lcd.print(":");
}
else if (spos == 14) {
spos++;
lcd.setCursor(spos - 9, 2);
lcd.print(":");
}
if (pressed >= 14)
{
setting = 0;
}
}
saved();
}
void saved() {
// rtc.set(0,33,18,9,7,2024);//smh dmy
sss = ss.toInt();
mmm = mm.toInt();
hhh = hh.toInt();
ddd = dd.toInt();
MMM = MM.toInt();
yyy = yy.toInt();
Serial.println(sss);
Serial.println(mmm);
Serial.println(hhh);
Serial.println(ddd);
Serial.println(MMM);
Serial.println(yyy);
// rtc.set(sss, mmm, hhh, ddd, MMM, yyy); //smh dmy
digitalWrite(buzz, HIGH);
lcd.setCursor(0, 0);
lcd.print (" --RavaBot-- ");
lcd.setCursor(0, 1);
lcd.print (" SUCCESS ");
lcd.setCursor(0, 2);
lcd.print (" SETTINGS SAVED ");
lcd.setCursor(0, 2);
lcd.print ("_-_-_-_-_-_-_-_-_-_-");
delay(1000);
digitalWrite(buzz, LOW);
lcd.clear();
pressed = 0;
spos = 0;
ss = "";
mm = "";
hh = "";
dd = "";
MM = "";
yy = "";
}
void alert() {
digitalWrite(buzz, HIGH);
delay(100);
digitalWrite(buzz, LOW);
delay(100);
digitalWrite(buzz, HIGH);
delay(100);
digitalWrite(buzz, LOW);
delay(100);
digitalWrite(buzz, HIGH);
delay(100);
digitalWrite(buzz, LOW);
delay(100);
}
void loop() {
if (daccess == 0)
{
lcd.setCursor(0, 0);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
lcd.setCursor(0, 1);
lcd.print("|| ENTER PASSWORD ||");
while (daccess == 0) {
lcd.setCursor(0, 0);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
lcd.setCursor(0, 1);
lcd.print("|| ENTER PASSWORD ||");
customKey = customKeypad.getKey();
if (customKey) {
digitalWrite(buzz, HIGH);
delay(100);
digitalWrite(buzz, LOW);
// if (customKey != '*' && customKey != '#') {
if (customKey == '*' || customKey == '#' || customKey == 'A' || customKey == 'B' || customKey == 'C' || customKey == 'D') {
alert();
}
else {
pressed++;
pos++;
password.concat(customKey);
lcd.setCursor(0, 0);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
lcd.setCursor(0, 1);
lcd.print("|| ENTER PASSWORD ||");
lcd.setCursor(pos, 2);
lcd.print(customKey);
delay(200);
lcd.setCursor(0, 3);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
}
if (pressed == 6)
{
if (Rpassword == password)
{
digitalWrite(buzz, HIGH);
lcd.setCursor(0, 0);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
lcd.setCursor(0, 1);
lcd.print(" PASSWORD CORRECT ");
lcd.setCursor(0, 2);
lcd.print(" ACCESS GRANTED ");
delay(200);
lcd.setCursor(0, 3);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
password = "";
daccess = 1;
pos = 5;
pressed = 0;
delay(1000);
digitalWrite(buzz, LOW);
}
else {
lcd.setCursor(0, 0);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
lcd.setCursor(0, 1);
lcd.print(" PASSWORD INCORRECT ");
lcd.setCursor(0, 2);
lcd.print(" ACCESS DENIED ");
delay(200);
lcd.setCursor(0, 3);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
password = "";
daccess = 0;
pos = 5;
pressed = 0;
alert();
delay(1000);
digitalWrite(buzz, LOW);
}
lcd.clear();
}
}
delay(100);
}
}
else {
customKey = customKeypad.getKey();
if (customKey) {
digitalWrite(buzz, HIGH);
if (customKey == 'A') {
s1 = !s1;
if (s1 == 1) {
lcd.setCursor(0, 0);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
lcd.setCursor(0, 1);
lcd.print("||SOCKET 1 STATUS ||");
lcd.setCursor(0, 2);
lcd.print(" ON ");
delay(200);
lcd.setCursor(0, 3);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
}
else {
lcd.setCursor(0, 0);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
lcd.setCursor(0, 1);
lcd.print("||SOCKET 1 STATUS ||");
lcd.setCursor(0, 2);
lcd.print(" OFF ");
delay(200);
lcd.setCursor(0, 3);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
}
}
else if (customKey == 'B') {
s2 = !s2;
if (s2 == 1) {
lcd.setCursor(0, 0);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
lcd.setCursor(0, 1);
lcd.print("||SOCKET 2 STATUS ||");
lcd.setCursor(0, 2);
lcd.print(" ON ");
delay(200);
lcd.setCursor(0, 3);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
}
else {
lcd.setCursor(0, 0);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
lcd.setCursor(0, 1);
lcd.print("||SOCKET 2 STATUS ||");
lcd.setCursor(0, 2);
lcd.print(" OFF ");
delay(200);
lcd.setCursor(0, 3);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
}
}
else if (customKey == 'C') {
s3 = !s3;
if (s3 == 1) {
lcd.setCursor(0, 0);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
lcd.setCursor(0, 1);
lcd.print("||SOCKET 3 STATUS ||");
lcd.setCursor(0, 2);
lcd.print(" ON ");
delay(200);
lcd.setCursor(0, 3);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
}
else {
lcd.setCursor(0, 0);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
lcd.setCursor(0, 1);
lcd.print("||SOCKET 3 STATUS ||");
lcd.setCursor(0, 2);
lcd.print(" OFF ");
delay(200);
lcd.setCursor(0, 3);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
}
}
else if (customKey == 'D') {
s4 = !s4;
if (s4 == 1) {
lcd.setCursor(0, 0);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
lcd.setCursor(0, 1);
lcd.print("||SOCKET 4 STATUS ||");
lcd.setCursor(0, 2);
lcd.print(" ON ");
delay(200);
lcd.setCursor(0, 3);
lcd.print("-_-_-_-_-_-_-_-_-_-_");
}
}
else if (customKey == '*') { //
setting = 1;
settings();
}
delay(20);
digitalWrite(buzz, LOW);
delay(1500);
lcd.clear();
}
if (disp < 30)
{
lcd.setCursor(0, 0);
lcd.print("DATE: ");
lcd.print(DATE);
lcd.setCursor(0, 1);
lcd.print("TIME: ");
lcd.print(TIME);
lcd.setCursor(0, 2);
lcd.print("TEMP: ");
lcd.print(TEMP);
lcd.setCursor(0, 3);
lcd.print("HUMI: ");
lcd.print(HUMI);
}
// else if (disp > 30 && disp <= 35) {
//
//
// }
if (disp > 32) {
disp = 0;
}
delay(100);
disp++;
all = String(s1) + "#" + String(s2) + "#" + String(s3) + "#" + String(s4);
Serial.print(all);
}
}