Arduino实验四:矩阵键盘实验

来自丢石头百科
Yousimaier17讨论 | 贡献2023年2月4日 (六) 15:20的版本 (创建页面,内容为“=== 实验现象 === *串口输出按下按键的键值 === 电路连接 === * === 主要程序 === <pre> for (int i = 0; i < 4; i++) { digitalWrite(C[i],…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

实验现象

  • 串口输出按下按键的键值

电路连接

主要程序

  for (int i = 0; i < 4; i++)
  {
    digitalWrite(C[i], LOW);
  }
  if (!digitalRead(R[0]) || !digitalRead(R[1]) || !digitalRead(R[2])|| !digitalRead(R[3]))
  {
    delay(10);
    if (!digitalRead(R[0]) || !digitalRead(R[1]) || !digitalRead(R[2])|| !digitalRead(R[3]))
    {
      digitalWrite(C[0], LOW);//扫描第一列
      digitalWrite(C[1], HIGH);
      digitalWrite(C[2], HIGH);
      digitalWrite(C[3], HIGH);
      for (int j = 0; j < 4; j++)
      {
        if (!digitalRead(R[j]))
        {
          Serial.print("S");
          Serial.print(j * 4 + 1);//在串口监视器中输出键盘编号
          Serial.println(" has been pressed");
          while (!digitalRead(R[j]));
          Serial.println("The button has been loosened");
        }
      }
....................

注意事项

  • 引脚配置:
    • 需将按键连接引脚配置为输入上拉模式,这样该引脚在没有外接信号输入的情况可下保持高电位,则写为:pinMode(9, INPUT_PULLUP);
    • 若单纯写为:pinMode(9, INPUT),则该引脚的状态会不稳定。出现0和1无规律变化,从而影响程序判断。

相关下载