Timisic 2022-05-16 12:02 采纳率: 100%
浏览 24
已结题

arduino矩阵按键中断程序似乎无法执行

问题相关代码
#include "Keypad.h"
const int ROWS = 1; 
const int COLS = 3; 
char keys[ROWS][COLS] = {
  {'1','2','3'},
};
byte rowPins[ROWS] = {3}; 
byte colPins[COLS] = {A0,4,2}; 
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

//arduino uno两个中断引脚
int pinInterrupt1 = 2; 
int pinInterrupt2 = 3;
void onChange()  
{  
  char key =keypad.getKey();
  if (key != NO_KEY){
    Serial.println(key);
  }
}  
  
void setup()  
{  
   Serial.begin(9600);   
   pinMode( pinInterrupt1, INPUT); 
   pinMode( pinInterrupt2, INPUT);
   //Enable中断管脚, 中断服务程序为onChange(), 监视引脚变化  
   attachInterrupt( digitalPinToInterrupt(pinInterrupt1), onChange, CHANGE);
   attachInterrupt( digitalPinToInterrupt(pinInterrupt2), onChange, CHANGE);  
   //为什么2、3中断引脚控制的按键(3)仍有延迟,似乎没执行中断程序
}  
  
void loop()  
{  
  // 模拟长时间运行的进程/复杂的任务。  
  for (int i = 0; i < 100; i++)  
  {  
    delay(20);   
  }  
}  

运行结果

2、3中断引脚控制的按键按下后似乎没执行中断程序
而其他两个按键按下后正常执行中断程序

我想要达到的结果

请教一下如何让2、3中断引脚控制的按键按下后也能执行中断程序,顺便问一下,为什么会发生这种情况?我查询了相关矩阵按键的原理,发现按下按键后应该是行或列对应的引脚电平会发生变化。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 5月24日
    • 修改了问题 5月17日
    • 创建了问题 5月16日

    悬赏问题

    • ¥20 VM虚拟机崩溃,重新登录故障,移除加密访问。
    • ¥15 双VSG并网系统,matlab,稳态工作点求解
    • ¥15 关于#Stata#的问题:数据是面板数据,SPSS里面不能控制年份和时间,所以只能用Stata做
    • ¥20 基于基于NioEventLoop线程阻塞问题
    • ¥20 我需要"hill48屈服模型 等向强化 非线性硬化"的abaqus本构子程序(umat或者vumat)对应的理论推导过程。
    • ¥15 基于ucc28019的pfc电路中芯片一直不工作
    • ¥15 yolov8在3588板子端c++推理报错
    • ¥50 unitywebrequest分段下载导致报错,如何解决?
    • ¥15 错误使用 gretna_GUI_PreprocessInterface>RunBtn_Callback
    • ¥15 WPF如何用Chart绘画出Y轴的左边数据