ปรึกษาโค้ด Password ของ Arduino ครับ

คือผมต้องการเขียนรับค่าหลายๆ password แต่ติดปัญหาตรง check password ครับ
เหมือนกับว่าเราใส่ pass แรกเข้าไปแล้วมัน check ว่าถูก แต่มันดันวนกลับไป check รหัสผ่าน ตัวที่สองด้วย
อันนี้คือโค้ดที่ผมเขียนไว้ครับ พึ่งเริ่มศึกษาครับ
[open_code]#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include <SD.h>
#include <Password.h>

File myFile; // สร้างออฟเจก File สำหรับจัดการข้อมูล
const int chipSelect = 4;

Password password = Password( "1234" );
Password password1 = Password( "2345" );

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {13,12,11,10}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {9,8,7,6}; //connect to the column pinouts of the keypad
LiquidCrystal_I2C lcd(0x27,16,2);
//initialize an instance of class NewKeypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int i;

void setup()
{
Serial.begin(9600);
keypad.addEventListener(keypadEvent);

pinMode(SS, OUTPUT);
myFile = SD.open("test.txt", FILE_WRITE);


lcd.begin();
lcd.clear();
lcd.print("Enter a Code");
lcd.setCursor(0,1);
lcd.print("Pressed: ");
i = 1;
}
void loop()
{
  keypad.getKey();
}

void keypadEvent(KeypadEvent eKey){
  switch (keypad.getState()){
    case PRESSED:
lcd.print(eKey);
switch (eKey){
case '*': checkPassword();  <<<<<<<   น่าจะเป็นส่วนนี้ครับคือ เช็คอันแรกแล้ว ว่าถูก
           checkPassword1();   K<<<<<< แล้วมาเช็คอันที่สองต่อ มันเลย เช็คว่าพาสผิด อีกครั้ง
           myFile.println(eKey);
           break;
case '#': password.reset();
           password1.reset();
           lcd.clear();
           lcd.print("Enter a Code");
           lcd.setCursor(0,1);
           lcd.print("Pressed: ");
           break;
default: password.append(eKey);
          password1.append(eKey);
     }
  }
}

void checkPassword(){
  if (password.evaluate()){
    lcd.clear();
    lcd.print("Password Correct");
    delay(1000);        
  }else{
    lcd.clear();
    lcd.print("Password");
    lcd.setCursor(0,1);
    lcd.print("InCorrect");}
    }
void checkPassword1(){
  if (password1.evaluate()){
    lcd.clear();
    lcd.print("Password Correct");
    delay(1000);        
  }else{
    lcd.clear();
    lcd.print("Password");
    lcd.setCursor(0,1);
    lcd.print("InCorrect");}
}    [/close_code]

ขอบคุณล่วงหน้าครับ มีอะไรแนะนำได้นะครับ
แก้ไขข้อความเมื่อ
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 3
เท่าที่เข้าใจตอนนี้

กด # จะรีเซ็ตรหัสผ่าน

กด * จะตรวจสอบรหัสผ่าน โดยที่ตรงนี้จะมีการเรียก 2 ฟังก์ชั่นคือ checkPassword() กับ  checkPassword1();

คำถามแรกคือ เรียกทำไม 2 อัน

คำถามที่ 2 คือ password.evaluate() กับ password1.evaluate() มันทำงานยังไง return อะไรกลับมา
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่