2 passwords (maybe more)

Is there a way in the password library that can define 2 passwords? For example, one user will use '1234' as his password and the other user will use 'ABCD'. This way I can monitor who goes in a certain room. TYVM.

yes

Ok, can you show me how?

I tried the following lines

Password pass1 = Password("1234");
Password pass2 = Password("ABCD");

and in checking, the ff lines

if(pass1.evaluate(){
//do this
}
if(pass2.evaluate(){
//do that
}
else{
//do nothing
}

Pressing the 1234 works. pressing ABCD goes to do nothing. TYVM.

I’ve not used that library, but have you tried (re)setting the password in the setup?

Password pass1 = Password();
Password pass2 = Password();

void setup()
{
  pass1.set("ABCD");
  pass2.set("1234");
}

void loop()
{
  //whatever
}

Pressing the 1234 works. pressing ABCD goes to do nothing.

None of my Arduinos have anything called a 1234 or an ABCD to be pressed. You need to show all of your code, so we have some idea what “pressing the 1234” and “pressing ABCD” mean.

I finally got it right…
Here’s the code as requested.

#include <Password.h>
#include <LiquidCrystal.h>
#include <Keypad.h>

Password pass1 = Password(“ABCD”);
Password pass2 = Password(“1234”);
int spkrpin = 9;
int ledpin = 13; //will be use for activating a relay
int ctr = 0; //LCD column counter
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{‘1’,‘2’,‘3’,‘A’},
{‘4’,‘5’,‘6’,‘B’},
{‘7’,‘8’,‘9’,‘C’},
{’*’,‘0’,’#’,‘D’}
};

byte rowPins[ROWS] = {46, 48, 50, 52}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {47, 49, 51, 53}; //connect to the column pinouts of the keypad
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //connect to the LCD pinouts

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
pinMode(spkrpin, OUTPUT);
pinMode(ledpin, OUTPUT);
digitalWrite(ledpin, LOW);
lcd.begin(16,2);
keypad.addEventListener(keypadEvent);
keypad.setDebounceTime(250);
}

void loop(){
keypad.getKey();
lcd.setCursor(0,0);
lcd.print(“Type password…”);
}

void keypadEvent(KeypadEvent eKey){

switch (keypad.getState()){
case PRESSED:
lcd.setCursor(ctr++,1);
lcd.print(eKey);
digitalWrite(spkrpin, HIGH);//Makes a clicking
delayMicroseconds(500); //sound after pressing
digitalWrite(spkrpin, LOW); //a key

switch (eKey){
case ‘#’: guessPassword(); break;
default: {
pass1.append(eKey);
pass2.append(eKey);
}
}
}
}

void guessPassword(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Checking …”);
delay(1000);
if (pass1.evaluate()){
lcd.setCursor(0,1); lcd.print(“PASSWORD OK”);
digitalWrite(ledpin,HIGH);
delay(2000);
digitalWrite(ledpin,LOW);
pass1.reset();
pass2.reset();
}
else if (pass2.evaluate()){
lcd.setCursor(0,1); lcd.print(“PASSWORD OK”);
digitalWrite(ledpin,HIGH);
delay(2000);
digitalWrite(ledpin,LOW);
pass2.reset();
pass1.reset();
}
else{
digitalWrite(ledpin,LOW);
lcd.setCursor(0,1); lcd.print(“WRONG PASSWORD”);
pass1.reset();
pass2.reset();
}
ctr=0;
delay(3000);
lcd.clear();
}