我希望Arduino代码在LCD显示屏上以以下格式提供输出
如果用户单击键盘上的'A',1、2、3,则LCD应当显示Hi:1,2,3,
这是我尝试过的方法,但是由于我是arduino的初学者,所以我无法找到一种构建代码的方法
#include <Keypad.h>
#include <LiquidCrystal.h>
const byte numRows= 4;
const byte numCols= 4;
char keymap[numRows][numCols]= {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[numRows] = {9,8,7,6}; // Pin Assign
byte colPins[numCols] = {5,4,3,2}; // Pin Assign
Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);
// LCD
// RS E D4 D5 D6 D7
LiquidCrystal lcd(A0,A1,A2,A3,A4,A5); // Pin Assign
void setup()
{
lcd.begin(16, 2);
lcd.clear();
lcd.print("PUSH ANY KEY! ");
lcd.cursor();
lcd.blink();
}
void loop(){
char keypressed = myKeypad.getKey();
if (keypressed != NO_KEY){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(keypressed);
lcd.print(':');
lcd.setCursor(3, 0);
}
}
您可能需要创建一个状态机,当您收到'A'
字符时,状态会发生变化。因此,虽然您没有收到'A'
字符,但是您的状态机仍处于忙等待状态(while (keypressed != 'A')
)。
[收到'A'
后,您将检查接下来收到的3个字符,并验证它们是否符合您的期望('1'
,'2'
,'3'
)。
如果您以任何不同的顺序收到它,则循环中断,并且在语句if (i == 4)
处验证失败。换句话说,一旦收到您不希望的电话号码,循环就会中断并且验证失败。
这是您可以在loop()
代码中添加的内容:
char expected[3] = { '1', '2', '3' };
int i = 0;
while (keypressed != 'A')
;
while (i < 4) {
for (i = 0; i < 4; i++) {
if (keypressed != expected[i])
break;
}
if (i == 4)
lcd.print("Hi:1,2,3");