พอดีผมกำลังทำโปรเจคเกี่ยวกับ Arduino โดยการเขียนโปรแกรมใช้รหัสล็อคตู้เซฟอ่ะครับ โดยวิธีการคือผู้ใช้สามารถกำหนดรหัสเองได้เพื่อล็อคและปลดล็อค แต่มันยังติดบ้างเงื่อนไขที่ผมไม่รู้จะเขียนยังไง รบกวนผู้รู้ช่วยแนะนำทีครับ นี้คือโค้ดที่ผมยังติดอยู่น่ะครับ
#include <Keypad.h>
#include <LiquidCrystal.h>
#define Password_Lenght 4 // เก็บสี่หลัก
LiquidCrystal LCD(A0, A1, A2, A3, A4, A5);
char Data_one[Password_Lenght]; //เก็บตัวเลขรหัสสี่หลัก
char Data_two[Password_Lenght];
byte maxPasswordLength = 4;
byte currentPasswordLength = 0;
byte data_count_one = 0,data_count_two = 0, master_count = 0;
bool Pass_is_good;
char customKey_one,customKey_two;
int state = 0;
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] = {10, 9, 8, 7};
byte colPins[COLS] = {13, 12, 11};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup()
{
LCD.setCursor(0,0);
LCD.begin(16, 2);
LCD.print("Enter password")
}
void lock()
{
}
void unlock()
{
}
void loop()
{
customKey_one = keypad.getKey();
if(Data_one != #,*) // เงื่อนไขค่าต้องไม่เปนชาบและสตาร์
{
Data_one[data_count_one] = customKey_one;
LCD.setCursor(data_count_one,1);
LCD.print(Data_one[data_count_one]);
data_count_one++;
}
if(กดเลขครบสี่หลัก) เงื่อนไขที่สองต้องใส่ครบสี่หลักแล้วจึงจะกด#ได้
{
case '#': lock(); break; //เงื่อนไขกดครบสี่หลักแล้วกด#จะล็อค
}
}
LCD.clear();
LCD.setCursor(0, 0);
LCD.print(Data_one);
lock();
state = 1;
}
if()
{
customKey_two = keypad.getKey();
if(Data_two != #,*) // ค่าต้องไม่เปนชบและสตาร์
{
Data_two[data_count_two] = customKey_two;
LCD.setCursor(data_count_two,1);
LCD.print(Data_two[data_count_two]);
data_count_two++;
}
if(กดเลขครบสี่หลัก) เงื่อนไขที่สองพอใส่ครบสี่หลัก
{
case '*': unlock(); break; //เงื่อนไขกดครบสี่หลักแล้วกด*จะปลดลอค ต้องอยู่ภาะใต้เงื่อนไขด้านล่าง
}
// จะเอา data one มาเทียบกับ data two
// โดยใช้เงื่อนไขด้านล่าง
if((Data_two == Data_one))
{
LCD.print("Unlock");
unlock();
state = 0;
}
if((Data_two != Data_one))
LCD.print("lock");
lock();
state = 0;
reset (cunter)
}
void clearData()
{
LCD.clear();
}
//ให้วนกลับไปลูปแรกเพื่อใส่รหัสใหม่
ข้อคำแนะนำการเขียนโค้ด Arduino หน่อยครับ
#include <Keypad.h>
#include <LiquidCrystal.h>
#define Password_Lenght 4 // เก็บสี่หลัก
LiquidCrystal LCD(A0, A1, A2, A3, A4, A5);
char Data_one[Password_Lenght]; //เก็บตัวเลขรหัสสี่หลัก
char Data_two[Password_Lenght];
byte maxPasswordLength = 4;
byte currentPasswordLength = 0;
byte data_count_one = 0,data_count_two = 0, master_count = 0;
bool Pass_is_good;
char customKey_one,customKey_two;
int state = 0;
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] = {10, 9, 8, 7};
byte colPins[COLS] = {13, 12, 11};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup()
{
LCD.setCursor(0,0);
LCD.begin(16, 2);
LCD.print("Enter password")
}
void lock()
{
}
void unlock()
{
}
void loop()
{
customKey_one = keypad.getKey();
if(Data_one != #,*) // เงื่อนไขค่าต้องไม่เปนชาบและสตาร์
{
Data_one[data_count_one] = customKey_one;
LCD.setCursor(data_count_one,1);
LCD.print(Data_one[data_count_one]);
data_count_one++;
}
if(กดเลขครบสี่หลัก) เงื่อนไขที่สองต้องใส่ครบสี่หลักแล้วจึงจะกด#ได้
{
case '#': lock(); break; //เงื่อนไขกดครบสี่หลักแล้วกด#จะล็อค
}
}
LCD.clear();
LCD.setCursor(0, 0);
LCD.print(Data_one);
lock();
state = 1;
}
if()
{
customKey_two = keypad.getKey();
if(Data_two != #,*) // ค่าต้องไม่เปนชบและสตาร์
{
Data_two[data_count_two] = customKey_two;
LCD.setCursor(data_count_two,1);
LCD.print(Data_two[data_count_two]);
data_count_two++;
}
if(กดเลขครบสี่หลัก) เงื่อนไขที่สองพอใส่ครบสี่หลัก
{
case '*': unlock(); break; //เงื่อนไขกดครบสี่หลักแล้วกด*จะปลดลอค ต้องอยู่ภาะใต้เงื่อนไขด้านล่าง
}
// จะเอา data one มาเทียบกับ data two
// โดยใช้เงื่อนไขด้านล่าง
if((Data_two == Data_one))
{
LCD.print("Unlock");
unlock();
state = 0;
}
if((Data_two != Data_one))
LCD.print("lock");
lock();
state = 0;
reset (cunter)
}
void clearData()
{
LCD.clear();
}
//ให้วนกลับไปลูปแรกเพื่อใส่รหัสใหม่