极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9914|回复: 2

我也来发个帖子,一个关于4*4矩阵键盘的东东。

[复制链接]
发表于 2015-6-25 18:29:39 | 显示全部楼层 |阅读模式
在网上找了很久,没有找到完整的4*4矩阵键盘,再要么就是库代码,库代码写得超级复杂,本来一个简单的问题复杂化了。没办法,在试用了库后,仔细去看了源代码。现我把自己的代码发给大家。

void setup() {
  // put your setup code here, to run once:
  for(int i = 2;i< 10;i++)
  {
    if(i < 6)
    pinMode(i,INPUT);
    else
    pinMode(i,OUTPUT);
  }
  Serial.begin(9600);
}
void initKey()
{
  for(int i = 2;i< 10;i++)
  {
    if(i < 6)
    {pinMode(i,INPUT);digitalWrite(i,HIGH);}
    else
    {pinMode(i,OUTPUT);digitalWrite(i,LOW);}
  }
}
int x,y ;
void loop() {
  // put your main code here, to run repeatedly:
  int val = 0;
  initKey();
  x = 0;
  y = 0;
for(int i =6;i<10;i++)
{
   for(int j = 2; j < 6;j++)
   {
    digitalWrite(i,LOW);
     int v = digitalRead(j);     
     if(v == 0 )
     {
       x = i;
       y = j;
     }
   }
   digitalWrite(i,HIGH);
}
        Serial.print("Cur :x =");      
        Serial.print(x);
        Serial.print(", y =");
        Serial.println(y);
delay(500);
}
哥的代码简单易懂。以此做为学习了这个坛子里的其他大神的内容的回报。
回复

使用道具 举报

发表于 2015-6-25 23:58:19 | 显示全部楼层
看了一下,既然你2345是input,6789是output,而且程序中也没有改变,为什么loop中要不断设置pinMode呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-26 18:20:40 | 显示全部楼层
这个跟扫描方式有关,你得找这方面的资料学习一下。我三两句也说不清楚。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 17:17 , Processed in 0.036151 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表