And My (almost final) Password/Security Code
#include <Wire.h>
#include <LiquidCrystal.h>
#include <Keypad.h>
int pressCnt = 0;
#define Password_Length 5
char Data[Password_Length];
char Master[Password_Length] = "1234";
byte data_count = 0, master_count = 0;
bool Pass_is_good;
enum MODES
{
MAINMENUMODE,
SECURITYMODE,
SECURITYMODETWO,
COOPMODES
};
const byte ROWS = 4;
const byte COLS = 4;
MODES mode = MAINMENUMODE;
char keys[ROWS][COLS] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte rowPins[ROWS] = {3, 5, 6, 7};
byte colPins[COLS] = {8, 9, 10};
Keypad myKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);
void setup() {
lcd.begin(16, 2);
MainMenu();
Serial.begin(9600);
}
void loop() {
char myKey = myKeypad.getKey();
if (myKey == '#') {
mode = SECURITYMODE;
pressCnt = 0;
SecurityScreen();
}
if (mode == SECURITYMODE && myKey == '*') {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Invalid Key ");
delay (2000);
SecurityScreen();
}
else if (mode == SECURITYMODETWO && myKey == '*'){
ArmedScreen();
}
else if (mode == SECURITYMODETWO && myKey == '#'){
DisarmScreen();
}
if (mode == SECURITYMODE) {
if (myKey >= '0' && myKey <= '9') {
Data[pressCnt] = myKey;
lcd.setCursor(pressCnt, 1);
lcd.print('*');
pressCnt++;
}
}
if (pressCnt == Password_Length - 1) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Password Is ");
if (!strcmp(Data, Master)) {
lcd.print("Good");
delay(1000);
clearData();
SecurityScreenTWO();
}
else {
lcd.print("Bad");
delay(1000);
clearData();
MainMenu();
}
}
}
void clearData() {
while (data_count != 0)
{
Data[data_count--] = 0;
}
pressCnt = 0;
return;
}
void MainMenu() {
mode = MAINMENUMODE;
lcd.setCursor(0, 0);
lcd.print("* for Coop");
lcd.setCursor(0, 1);
lcd.print("# for Security");
}
void SecurityScreen() {
mode = SECURITYMODE;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Enter Password");
}
void SecurityScreenTWO() {
mode = SECURITYMODETWO;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("* To Arm");
lcd.setCursor(0, 1);
lcd.print("# To Disarm");
}
void ArmedScreen(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Security System");
lcd.setCursor(0, 1);
lcd.print(" Is ARMED ");
}
void DisarmScreen (){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Security System Is");
lcd.setCursor(0, 1);
lcd.print(" Disarmed ");
}