// Example usage for Keypad_Particle library by Mark Stanley, Alexander Brevig.
#include <Keypad_Particle.h>
int led1 = D5;
int led2 = D7;
// set up keypad buttons
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = { D3, D2, D1, D0 };
byte colPins[COLS] = { D6, D5, D4 };
// create Keypad object variable called "keypad"
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
// change to any secret code or command of any length
const int codeLength = 3;
char secretCode[codeLength] = {'0', '8', '5'};
int val1 = 0;
int val2 = 0;
int val3 = 0;
int correctCount = 0;
boolean correctCode = false;
int uwu = 0;
int i = 0;
void myHandler(const char *event, const char *data);
void setup(){
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
delay(4000);
Serial.begin(9600);
delay(4000);
Particle.subscribe("RESPONSE", myHandler, MY_DEVICES);
pinMode(A5, INPUT);
pinMode(A4, INPUT);
pinMode(A3, INPUT);
pinMode(A2, OUTPUT);
pinMode(D8, OUTPUT);
}
void loop(){
checkCode();
if (correctCode) {
// add instructions to do something if secret code entered correctly
pinMode(led2, OUTPUT);
digitalWrite(led2, HIGH);
delay(500);
}
val1 = digitalRead(A5);
if (val1 == HIGH) {
digitalWrite(A2, HIGH);
delay(4000);
val1 = 0 ;
val2 = digitalRead(A4);
if (val2 == HIGH) {
digitalWrite(led2, HIGH);
delay(4000);
val2 = 0 ;
val3 = digitalRead(A3);
if (val3 == HIGH) {
val3 = 0 ;
digitalWrite(D8, HIGH);
Particle.publish("CODE", "CORRECT" , PRIVATE);
delay(4000);
}
}
}
digitalWrite(A2, LOW);
digitalWrite(led2, LOW);
digitalWrite(D8, LOW);
}
void myHandler(const char *event, const char *data)
{
if (strcmp(data,"TRUE")==0){
digitalWrite(D7,HIGH);
delay(4000);
digitalWrite(D7,LOW);
}
}
void checkCode() {
char key = keypad.getKey();
// if key pressed, then check which key
if (key) {
// optional: play sound as feedback when key pressed
// tone(speakerPin, 3000, 25);
// if key matches next key in secret code, add one to correct count
if (key == secretCode[correctCount]) {
correctCount++;
} else {
// else wrong key was entered (reset correct count)
correctCount = 0;
}
}
// check to see if complete secret code entered correctly
if (correctCount == codeLength) {
correctCode = true;
}
// need slight delay between key readings
delay(500);
}
Comments
Please log in or sign up to comment.