【问题标题】:Displaying the input from keypad on a LCD screen using Arduino使用 Arduino 在 LCD 屏幕上显示来自键盘的输入
【发布时间】: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);

    }

}

【问题讨论】:

    标签: arduino lcd keypad


    【解决方案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");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-01
      • 1970-01-01
      相关资源
      最近更新 更多