pqfeng 发表于 2015-6-25 18:29:39

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

在网上找了很久,没有找到完整的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);
}
哥的代码简单易懂。以此做为学习了这个坛子里的其他大神的内容的回报。

pumpitup 发表于 2015-6-25 23:58:19

看了一下,既然你2345是input,6789是output,而且程序中也没有改变,为什么loop中要不断设置pinMode呢?

pqfeng 发表于 2015-6-26 18:20:40

这个跟扫描方式有关,你得找这方面的资料学习一下。我三两句也说不清楚。
页: [1]
查看完整版本: 我也来发个帖子,一个关于4*4矩阵键盘的东东。