Code:
//www.elegoo.com
//2016.12.9
/* @file CustomKeypad.pde
|| @version 1.0
|| @author Alexander Brevig
|| @contact [email protected]
||
|| @description
|| | Demonstrates changing the keypad size and key values.
|| #
*/
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
int redled = 10;
int yellowled = 11;
int position = 0;
void setup(){
Serial.begin(9600);
pinMode(redled, OUTPUT);
pinMode(yellowled, OUTPUT);
setLocked(true);
}
void loop()
{
char key = customKeypad.getKey();
char secretCode[] = "1234";
if (key == '*' || key == '#') {
position = 0;
setLocked(true);
}
if (key == secretCode[position]) {
Serial.println("digit correct");
position++;
}
if (position == 4) {
setLocked(false);
}
//delay(50);
Serial.println(position);
}
void setLocked(int locked)
{
if (locked) {
digitalWrite(redled, HIGH);
//digitalWrite(yellowled, LOW);
}
else {
digitalWrite(redled, LOW);
digitalWrite(yellowled, HIGH);
delay(1000);
digitalWrite(yellowled, LOW);
digitalWrite(redled, HIGH);
}
}
this works as it is with int position declared globally if i include it in the loop it keeps getting set to 0 every time the loop runs