Hi... I'm trying to make a password triggered event, but it doesn't quite work. The LED just turns on after uploading the code. I found some other tutorials on how to make a password triggered even, thats more detailed than this, but still wondering why this doesn't work? Any ideas?
#include <LiquidCrystal.h>
#include <Keypad.h>
//KEYPAD SETUP
const byte ROWS = 4; //DEFINE NUMBER OF ROWS ON KEYPAD
const byte COLS = 3; //DEFINE NUMBER OF COLUMNS ON KEYPAD
char keys[ROWS][COLS] = { //ARRAY FOR KEYPAD KEYS
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};//END ARRAY FOR KEYPAD KEYS
byte rowPins[ROWS] = {3, 10, 9, 2}; //PINS WHERE THE ROWS OF THE KEYPAD IS CONNECTED
byte colPins[COLS] = {17, 16, 15}; //PINS WHERE THE COLUMNS OF THE KEYPAD IS CONNECTED
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );//MAKING KEYMAP FOR KEYPAD
const unsigned long debounceValue = 50UL; //SETTING FOR DEBOUNCE TIME IN MILLISECONDS
unsigned long debounceTime; //VARIABLE FOR DEBOUNCING KEYS PRESSED
boolean pass1 = 0;
boolean pass2 = 0;
boolean pass3 = 0;
boolean pass4 = 0;
const byte irsens = 7; //DEFINE IR Sensor VARIABLE ON PIN7
const byte led = 12; //DEFINE led ON PIN12
byte currentState = 1; //MAKE VARIABLE CURRENTSTATE, SET IT TO START IN STATE 1 IN AUTOMODE
//INITIALIZE SETUP
void setup()
{
Serial.begin(9600); //SET BAUD RATE
debounceTime = millis(); //DEBOUNCETIME = CURRENT TIME
pinMode(irsens, INPUT);
pinMode(led, OUTPUT);
keypad.addEventListener(keypadEvent); //INITIALIZE CHECKUP ON KEYPAD USAGE
} // END OF SETUP
//INITIALIZE THE MAIN LOOP
void loop()
{
char key = keypad.getKey();
if (millis() - debounceTime >= debounceValue)
{
debounceTime = millis(); //re-initialize to the current time
}
switch (currentState)
{
//***************************
case 1:
if (pass1)
{
Serial.println ("Here!");
pass1 = !pass1;
}
currentState = 2;
break;
//***************************
case 2:
if (pass2)
{
pass2 = !pass2;
}
currentState = 3;
break;
//***************************
case 3:
if (pass3)
{
pass3 = !pass3;
}
currentState = 4;
break;
//***************************
case 4:
if (pass4)
{
pass4 = !pass4;
}
currentState = 5;
break;
//***************************
case 5:
digitalWrite (led, HIGH);
currentState = 5;
break;
//***************************
default:
currentState = 1; //Back to state 1
} // END SWITCH/CASE===========================================================
} //END IF STATEMENT=============================================================
//}//END MAIN LOOP=============================================================================================
void keypadEvent(KeypadEvent key) {
//MANUAL MODE OPERATION PARAMETERS
if (keypad.getState() == PRESSED) {
if (key == '1')
{
// if (key == '1') {
pass1 = 1;
// }
}
if (key == '2')
{
// if (key == '2') {
pass2 = 1;
//}
}
if (key == '3')
{
//if (key == '3') {
pass3 = 1;
//}
}
if (key == '4')
{
//if (key == '4') {
pass4 = 1;
//}
}
}
}//END KEYPADEVENT FUNCTION