ตอนนี้ผมใช้ keypad ต่อกับ arduino แล้วอยากแสดงผมเวลากดออกจอ LCD จากที่ดูในคอมพิวเตอร์การกดค่าแสดงออกมาตรงแล้ว แต่ที่ผมต้องการคือ
1.เวลากด keypad จะแสดงตำแหน่งไหนก็ได้ทีจอ LCD ที่เราจะกำหนด
2.เมื่อกดเลขซ้ำ เลขที่กดครั้งแรกจะไม่นำมานับซ้ำ
ผมเลยอยากสอบถามเผื่อท่านใดช่วยแนะนำผมหน่อยนะครับ
void setup()
{
Serial.begin(9600);
keypad.addEventListener(keypadEvent); //add an event listener for this keypad
lcd.begin(24,4);
lcd.setCursor(0,0);
lcd.print("Press any key");
lcd.setCursor(0,1);
lcd.print("Bed=");
lcd.setCursor(8,1);
lcd.print("
C.C)=");
lcd.setCursor(0,2);
lcd.print("01=100 C.C");
lcd.setCursor(11,2);
lcd.print("*= enter");
lcd.setCursor(0,3);
lcd.print("02=1000C.C");
lcd.setCursor(11,3);
lcd.print("#= reset");
////////////////////// ในส่วนนี้ ผมต้องการแบบว่า กดเลขครั้งแรกตรง Bed ครั้งที่2 ตรง C.C แต่ติดปัญหาคือมันแสดงซ้ำๆตรงกดครั้งแรกนะครับ
}
void loop()
{
keypad.getKey();
}
void keypadEvent(KeypadEvent eKey)
{
switch (keypad.getState())
{ //////////////////////////////////////////////////////////////////////////////////////////////
case PRESSED: อันนี้ผมลองเขียนตามที่คิดออกมาน่ะครับ
if(eKey=='1') แต่ ตรงนี้ล่ะครับที่ผมต้องการว่าเวลากดเลขแล้วให้มันแสดงแบบไม่ซ้ำ เช่น กดเลขครั้งที่1
{ ออกเลข 1 ตรง 5,1 พอกดเลข1 อีกครั้ง ให้ไปแสดงที่ 16,1 น่ะครับ ช่วยผมทีนะครับ
lcd.setCursor(5,1); ส่วนpassword ผมใช้งานในลูปอื่นแล้วครับ มีติดแค่ในส่วนนี้เท่านั้น
lcd.print("1");
}
if(eKey=='0')
{
lcd.setCursor(15,1);
lcd.print("0");
}
if(eKey=='1')
{
lcd.setCursor(16,1);
lcd.print("1");
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Serial.print("Pressed: ");
Serial.println(eKey);
switch (eKey){
case '*': checkPassword1();
checkPassword2();
checkPassword3();
checkPassword4();
checkPassword5();
checkPassword6();
checkPassword7();
checkPassword8();
break;
case '#': password1.reset();
password2.reset();
password3.reset();
password4.reset();
password5.reset();
password6.reset();
password7.reset();
password8.reset();
break;
default: password1.append(eKey);
password2.append(eKey);
password3.append(eKey);
password4.append(eKey);
password5.append(eKey);
password6.append(eKey);
password7.append(eKey);
password8.append(eKey);
}
}
}
อยากสอบถามเกี่ยวกับการกด keypad 4x3 ออกจอ LCDครับ
1.เวลากด keypad จะแสดงตำแหน่งไหนก็ได้ทีจอ LCD ที่เราจะกำหนด
2.เมื่อกดเลขซ้ำ เลขที่กดครั้งแรกจะไม่นำมานับซ้ำ
ผมเลยอยากสอบถามเผื่อท่านใดช่วยแนะนำผมหน่อยนะครับ
void setup()
{
Serial.begin(9600);
keypad.addEventListener(keypadEvent); //add an event listener for this keypad
lcd.begin(24,4);
lcd.setCursor(0,0);
lcd.print("Press any key");
lcd.setCursor(0,1);
lcd.print("Bed=");
lcd.setCursor(8,1);
lcd.print("C.C)=");
lcd.setCursor(0,2);
lcd.print("01=100 C.C");
lcd.setCursor(11,2);
lcd.print("*= enter");
lcd.setCursor(0,3);
lcd.print("02=1000C.C");
lcd.setCursor(11,3);
lcd.print("#= reset");
////////////////////// ในส่วนนี้ ผมต้องการแบบว่า กดเลขครั้งแรกตรง Bed ครั้งที่2 ตรง C.C แต่ติดปัญหาคือมันแสดงซ้ำๆตรงกดครั้งแรกนะครับ
}
void loop()
{
keypad.getKey();
}
void keypadEvent(KeypadEvent eKey)
{
switch (keypad.getState())
{ //////////////////////////////////////////////////////////////////////////////////////////////
case PRESSED: อันนี้ผมลองเขียนตามที่คิดออกมาน่ะครับ
if(eKey=='1') แต่ ตรงนี้ล่ะครับที่ผมต้องการว่าเวลากดเลขแล้วให้มันแสดงแบบไม่ซ้ำ เช่น กดเลขครั้งที่1
{ ออกเลข 1 ตรง 5,1 พอกดเลข1 อีกครั้ง ให้ไปแสดงที่ 16,1 น่ะครับ ช่วยผมทีนะครับ
lcd.setCursor(5,1); ส่วนpassword ผมใช้งานในลูปอื่นแล้วครับ มีติดแค่ในส่วนนี้เท่านั้น
lcd.print("1");
}
if(eKey=='0')
{
lcd.setCursor(15,1);
lcd.print("0");
}
if(eKey=='1')
{
lcd.setCursor(16,1);
lcd.print("1");
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Serial.print("Pressed: ");
Serial.println(eKey);
switch (eKey){
case '*': checkPassword1();
checkPassword2();
checkPassword3();
checkPassword4();
checkPassword5();
checkPassword6();
checkPassword7();
checkPassword8();
break;
case '#': password1.reset();
password2.reset();
password3.reset();
password4.reset();
password5.reset();
password6.reset();
password7.reset();
password8.reset();
break;
default: password1.append(eKey);
password2.append(eKey);
password3.append(eKey);
password4.append(eKey);
password5.append(eKey);
password6.append(eKey);
password7.append(eKey);
password8.append(eKey);
}
}
}