|
Post by 邱老师 on Feb 14, 2021 19:48:52 GMT
程序运行结果按矩阵键盘中的任意一个键盘,arduino可以识别出是哪个键被按下,并把它打印到串口,打开串口显示器就可以看到。 接线:行线:2、3、4、5,列线:7、8、9、10,按顺序接到J24插座,D2口接最上面,D10接最下面。 链接:https://pan.baidu.com/s/1upHzsMY8cBmpWUREV2a67A 提取码:a5ow const int numRows = 4;//定义4行
const int numCols = 4;//定义4列
const int debounceTime = 20;//去抖动时间长度
const char keymap[numRows][numCols]= {//键值,可以按需要更改
{ '+','3','2','1' },
{'-','6','5','4' },
{'X','9','8','7' },
{'/','=','.','0' }
};
const int rowPins[numRows] = {2,3,4,5};//设置硬件对应的引脚
const int colPins[numCols] = {7,8,9,10};
//初始化功能
void setup(){
Serial.begin(9600);
for(int row = 0; row <= numRows; row++){
pinMode(rowPins[row],INPUT);
digitalWrite(rowPins[row],HIGH);
}
for(int column = 0;column <= numCols; column++){
pinMode(colPins[column],OUTPUT);
digitalWrite(colPins[column],HIGH);
}
}
//主循环
void loop() {
// 添加其他的程序,循环运行
char key = getkey();
if(key !=0){
Serial.print("Got key ");//串口打印键值
Serial.println(key);
}
}
//读取键值程序
char getkey(){
char key = 0;
for(int column = 0;column < numCols; column++){
digitalWrite(colPins[column],LOW);
for(int row = 0 ;row < numRows; row++){
if(digitalRead(rowPins[row]) == LOW){ //是否有按键按下
delay(debounceTime);
while(digitalRead(rowPins[row]) == LOW) //等待按键释放
;
key = keymap[row][column];
}
}
digitalWrite(colPins[column],HIGH); //De-active the current column
}
return key;
}
|
|