kenneth22 发表于 2013-8-6 15:52:16

新手求救 抢答器实验疑问

int R=8;
int G=7;
int i;
int j=0;
void buzzer()
{
for(i=0;i<80;i++)
{
digitalWrite(5,HIGH);
delay(20);
digitalWrite(5,LOW);
delay(20);
}
}
void key_scan()
{
int key_1,key_2,key_3;
key_1=analogRead(1);
key_2=analogRead(2);
key_3=analogRead(3);
if(key_1<1000&&key_2<1000&&key_3<1000)
   { return;}
if(key_1>1000)
    {
   delay(10);
   if(key_1>1000)
      {
       buzzer();
       digitalWrite(R,HIGH);
       digitalWrite(G,LOW);
      
      }
      else
      {
       return;
      }
    }
    if(key_2>1000)
    {
   delay(10);
   if(key_2>1000)
    {
   buzzer();
   digitalWrite(R,LOW);
   digitalWrite(G,HIGH);
    }
    else
    {
   return;
    }
    if(key_3>818)
    {
   delay(10);
    if(key_3>1000)
      {
       buzzer();
       digitalWrite(R,LOW);
       digitalWrite(G,LOW); }
   else{
      return;
   }
    }
    }
}
void setup()
{
for(i=5;i<=8;i++)
   {
    pinMode(i,OUTPUT);
   }
}
void loop()
{
while(1)
{
key_scan();
}
}



程序中R是红的,G是绿灯。delay是用来延时,躲避抖动干扰的。按第三个键的时候,就是最后按那个,理应是两个灯都熄灭的,但是却红灯亮啦!接线我检查过,没问题。

kenneth22 发表于 2013-8-6 15:52:59

求问那是为什么????第三个键啊~!!!!!!:'(:'(:'(:'(:'(:'(

pathletboy 发表于 2013-8-6 16:28:36

按键IO口要使用输入模式,使用digitalRead读IO。

kenneth22 发表于 2013-8-6 16:42:59

本帖最后由 kenneth22 于 2013-8-6 16:44 编辑

pathletboy 发表于 2013-8-6 16:28 static/image/common/back.gif
按键IO口要使用输入模式,使用digitalRead读IO。

按键那我插去模拟口,所以用模拟口读没问题

pathletboy 发表于 2013-8-6 16:47:46

你把key1 key2的点灯都去了,开始运行时候都点亮,再按key3,看看情况。

kenneth22 发表于 2013-8-6 17:51:03

pathletboy 发表于 2013-8-6 16:47 static/image/common/back.gif
你把key1 key2的点灯都去了,开始运行时候都点亮,再按key3,看看情况。

按key3之后,两个灯还亮................................................................
页: [1]
查看完整版本: 新手求救 抢答器实验疑问