Hey guys,
thanks for your help, but I figured it out.
I used a variable (int State = ?) and while states to do what I wanted. It works perfectly for now.
Thanks.
//keypad with password
#include <Keypad.h>
const byte myRows = 4; // number of rows
const byte myCols = 3; //number of columns
char keys[myRows][myCols] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
}; //character array to map the button layout of the keypad
byte rowPins[myRows] = {7, 2, 3, 5 }; //array to map keypad to MCU pins
byte colPins[myCols] = {6, 8, 4 }; //array to map keypad to MCU pins
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, myRows, myCols ); //keypad library map function
char inputArray[4]; //array to gather user keypad presses
char Main[4] = {'4','6','2','7'}; //array to hold keypad password
char Guest[4] = {'2','4','6','8'};
char Lock[4] = {'1','1','1','1'};
char Unlock[4] = {'2','2','2','2'};
#define ledPin 13 //led to register keypad pressses
#define registerPin 12 //led that registers correct password entry
int i = 0;
int state = 1; //Creates the state
void setup()
{
Serial.begin(9600); //open serial porrt
pinMode(ledPin, OUTPUT); //define led pin as output
pinMode(registerPin, OUTPUT); //define led pin as output
}
void loop()
{
{
while (state = 1)
{
char key = kpd.getKey();
//if a key is presseds
if(key)
{
//turn on ledPin
digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
delay(100);
inputArray[i] = key; //store entry into array
i++;
Serial.println(key); //print keypad character entry to serial port
if (key=='*')
{
Serial.println("Reset");
i=0; //reset i
}
if (i == 4) //if 4 presses have been made
{
{
//match input array to password array
if (inputArray[0] == Main[0] &&
inputArray[1] == Main[1] &&
inputArray[2] == Main[2] &&
inputArray[3] == Main[3])
{
digitalWrite(registerPin, HIGH); //turn on registerPin led
delay(1000);
digitalWrite(registerPin, LOW);
}
}
{
//match input array to password array
if (inputArray[0] == Guest[0] &&
inputArray[1] == Guest[1] &&
inputArray[2] == Guest[2] &&
inputArray[3] == Guest[3])
{
digitalWrite(registerPin, HIGH); //turn on registerPin led
delay(1000);
digitalWrite(registerPin, LOW);
}
}
{
//match input array to password array
if (inputArray[0] == Lock[0] &&
inputArray[1] == Lock[1] &&
inputArray[2] == Lock[2] &&
inputArray[3] == Lock[3])
{
Serial.println("State 2");
state = 2;
break;
}
}
{
i=0; //reset i
}
}
}
};
}
{
while (state = 2)
{
char key = kpd.getKey();
//if a key is presseds
if(key)
{
//turn on ledPin
digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
delay(100);
inputArray[i] = key; //store entry into array
i++;
Serial.println(key); //print keypad character entry to serial port
if (key=='*')
{
Serial.println("Reset");
i=0; //reset i
}
if (i == 4) //if 4 presses have been made
{
{
//match input array to password array
if (inputArray[0] == Main[0] &&
inputArray[1] == Main[1] &&
inputArray[2] == Main[2] &&
inputArray[3] == Main[3])
{
digitalWrite(registerPin, HIGH); //turn on registerPin led
delay(1000);
digitalWrite(registerPin, LOW);
}
}
{
//match input array to password array
if (inputArray[0] == Unlock[0] &&
inputArray[1] == Unlock[1] &&
inputArray[2] == Unlock[2] &&
inputArray[3] == Unlock[3])
{
Serial.println("State 1");
state = 1;
break;
}
}
{
i=0; //reset i
}
}
}
};
}
}