使用 Arduino 在 LCD 屏幕上显示来自键盘的输入
Posted
技术标签:
【中文标题】使用 Arduino 在 LCD 屏幕上显示来自键盘的输入【英文标题】:Displaying the input from keypad on a LCD screen using Arduino 【发布时间】:2020-05-29 00:01:45 【问题描述】:我想要一个 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);
【问题讨论】:
【参考方案1】:您可能需要创建一个状态机,当您收到 'A'
字符时,状态会发生变化。因此,虽然您没有收到 'A'
字符,但您的状态机仍处于忙碌等待状态 (while (keypressed != 'A')
)。
收到'A'
后,您将检查接下来收到的 3 个字符,并验证它们是否符合您的预期('1'
、'2'
、'3'
)。
如果您以任何不同的顺序接收它,则循环中断,并且验证在语句 if (i == 4)
处失败。换句话说,一旦你收到一个你不期望的数字,循环就会中断并且验证失败。
您可以在loop()
代码中添加以下内容:
void loop()
char expected[3] = '1', '2', '3' ;
int i = 0;
char keypressed = myKeypad.getKey();
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");
【讨论】:
以上是关于使用 Arduino 在 LCD 屏幕上显示来自键盘的输入的主要内容,如果未能解决你的问题,请参考以下文章
用arduino 制作温湿度计,利用LCD显示屏将温湿度显示在LCD显示屏上