คือผมต้องการเขียนรับค่าหลายๆ 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]
ขอบคุณล่วงหน้าครับ มีอะไรแนะนำได้นะครับ
ปรึกษาโค้ด Password ของ Arduino ครับ
เหมือนกับว่าเราใส่ 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]
ขอบคุณล่วงหน้าครับ มีอะไรแนะนำได้นะครับ