พอดีผมเขียนโค้ด เกี่ยวกับ การใช้งาน เกี่ยวกับ keypad หลักการทำงาน ดังนี้ ครับ
หน้านี้เป็นหน้าเริ่มต้นการใช้งาน lcd จะ เเสดงครับเมื่อ กดบน keypad ตัวอะไรก็ได้ ก็จะไปหน้าต่อไป
เมื่อ กด 1 เข้าหน้า ฝากสัมภาระ กด 2 เข้าหน้านำสัมภาระออก ถ้าไม่กดไร เลย กลับ หน้าเริ่มต้นการใช้งาน ครับ ( กดบน keypad )
สิ่งที่ผมไม่สามารถเขียนโค้ด ออกมาได้ คือ ถ้า กด 1 จะเข้า ฟังชันของฝากสัมภาระ เเล้วกด 0 จะย้อนกลับหน้าเลือกรายการ
พี่ๆ ช่วยเขียน โค้ด ให้หน่อยนะครับ โค้ดของผม ปัญหาคือ มันจดจำ ค่าตัวนั้นๆครับ เเล้วการเรียกใช้ ปุ่มkeypad เเต่ละค่า เรียกใช้ยังไงครับ
#include <Keypad.h>
#include<LiquidCrystal_PCF8574.h>
LiquidCrystal_PCF8574 lcd(0x27);
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] = {9,8,7,6};
byte colPins[COLS] = {5,4,3,2};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int r1=10;
int r2=11;
int b1=12;
void setup(){
lcd.begin(20,4);
pinMode(r1,OUTPUT);
pinMode(r2,OUTPUT);
pinMode(b1,OUTPUT);
digitalWrite(r1,LOW);
digitalWrite(r2,LOW);
digitalWrite(b1,LOW);
START1();
}
void loop(){
keypad.getKey();
START2();
}
void START1() {
while(1){
if(keypad.getKey()){
lcd.clear();
delay(500);
break;
}
else
{
lcd.setCursor(4,1);
lcd.print("SMART LOCKER");
lcd.setCursor(2,2);
lcd.print("PRESS * TO START");
delay(100);
}
}
}
void START2(){
keypad.addEventListener(keypadEvent1);
lcd.setCursor(2,0);
lcd.print("PRESS 1 TO LOGIN");
lcd.setCursor(2,1);
lcd.print("PRESS 2 TO LOGOUT");
lcd.setCursor(2,2);
lcd.print("PRESS 0 TO RETURN");
delay(100);
}
void keypadEvent1(KeypadEvent eKey1){
switch (keypad.getState()){
case PRESSED:
switch (eKey1){
case '1': lcd.clear();lcd.setCursor(7,1);
lcd.print("LOGIN");delay(2000);LOGIN();break;
case '2': lcd.clear();lcd.setCursor(7,1);
lcd.print("LOGOUT");delay(2000);LOGOUT();break;
case '0': lcd.clear();lcd.setCursor(7,1);
lcd.print("RETURN");delay(2000);START1();break;
}
}
}
void LOGIN(){
while(1){
lcd.clear();
lcd.setCursor(1,1);
lcd.print("CHOOSE EMPTY SLOT");
lcd.setCursor(2,2);
lcd.print("PRESS 0 TO RETURN");
delay(100);
}
}
void LOGOUT(){
while(1){
lcd.clear();
lcd.setCursor(1,1);
lcd.print("CHOOSE YOUR SLOT");
lcd.setCursor(2,2);
lcd.print("PRESS 0 TO RETURN");
delay(100);
}
}
ขอคำปรึกษา พี่ๆทุกท่านครับ เกี่ยวกับ Arduino
หน้านี้เป็นหน้าเริ่มต้นการใช้งาน lcd จะ เเสดงครับเมื่อ กดบน keypad ตัวอะไรก็ได้ ก็จะไปหน้าต่อไป
เมื่อ กด 1 เข้าหน้า ฝากสัมภาระ กด 2 เข้าหน้านำสัมภาระออก ถ้าไม่กดไร เลย กลับ หน้าเริ่มต้นการใช้งาน ครับ ( กดบน keypad )
สิ่งที่ผมไม่สามารถเขียนโค้ด ออกมาได้ คือ ถ้า กด 1 จะเข้า ฟังชันของฝากสัมภาระ เเล้วกด 0 จะย้อนกลับหน้าเลือกรายการ
พี่ๆ ช่วยเขียน โค้ด ให้หน่อยนะครับ โค้ดของผม ปัญหาคือ มันจดจำ ค่าตัวนั้นๆครับ เเล้วการเรียกใช้ ปุ่มkeypad เเต่ละค่า เรียกใช้ยังไงครับ
#include <Keypad.h>
#include<LiquidCrystal_PCF8574.h>
LiquidCrystal_PCF8574 lcd(0x27);
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] = {9,8,7,6};
byte colPins[COLS] = {5,4,3,2};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int r1=10;
int r2=11;
int b1=12;
void setup(){
lcd.begin(20,4);
pinMode(r1,OUTPUT);
pinMode(r2,OUTPUT);
pinMode(b1,OUTPUT);
digitalWrite(r1,LOW);
digitalWrite(r2,LOW);
digitalWrite(b1,LOW);
START1();
}
void loop(){
keypad.getKey();
START2();
}
void START1() {
while(1){
if(keypad.getKey()){
lcd.clear();
delay(500);
break;
}
else
{
lcd.setCursor(4,1);
lcd.print("SMART LOCKER");
lcd.setCursor(2,2);
lcd.print("PRESS * TO START");
delay(100);
}
}
}
void START2(){
keypad.addEventListener(keypadEvent1);
lcd.setCursor(2,0);
lcd.print("PRESS 1 TO LOGIN");
lcd.setCursor(2,1);
lcd.print("PRESS 2 TO LOGOUT");
lcd.setCursor(2,2);
lcd.print("PRESS 0 TO RETURN");
delay(100);
}
void keypadEvent1(KeypadEvent eKey1){
switch (keypad.getState()){
case PRESSED:
switch (eKey1){
case '1': lcd.clear();lcd.setCursor(7,1);
lcd.print("LOGIN");delay(2000);LOGIN();break;
case '2': lcd.clear();lcd.setCursor(7,1);
lcd.print("LOGOUT");delay(2000);LOGOUT();break;
case '0': lcd.clear();lcd.setCursor(7,1);
lcd.print("RETURN");delay(2000);START1();break;
}
}
}
void LOGIN(){
while(1){
lcd.clear();
lcd.setCursor(1,1);
lcd.print("CHOOSE EMPTY SLOT");
lcd.setCursor(2,2);
lcd.print("PRESS 0 TO RETURN");
delay(100);
}
}
void LOGOUT(){
while(1){
lcd.clear();
lcd.setCursor(1,1);
lcd.print("CHOOSE YOUR SLOT");
lcd.setCursor(2,2);
lcd.print("PRESS 0 TO RETURN");
delay(100);
}
}