安洛那基 发表于 2017-11-13 01:59:58

当按的按钮的顺序不同时,要如何让不同的灯亮起来?

本帖最后由 安洛那基 于 2017-11-17 00:50 编辑

小妹我是最近才开始接触的Arduino的
对于程式或接线真的都很不擅长...
但组员们都有其他的工作要做,所以只好让我来制作
所以想要求助高手们


请问当我现在有“两个按钮”和“两个灯”
当按的顺序不同时,要怎么亮不同的灯呢?

例如:
先按住甲不放,再按乙时,第1个灯亮起,放开时就熄灭
先按住乙不放,再按甲时,第2个灯亮起,放开时就熄灭

有点怕自己解释不清楚
所以我做了一张示意表
希望高手们能够帮帮我
真的很感谢

qfdc 发表于 2017-11-13 23:28:58

int m0=2;
int m1=3;
int LEDa=4;
int LEDb=5;

void setup() {
pinMode(m0,OUTPUT);
pinMode(m1,OUTPUT);
pinMode(LEDa,OUTPUT);
pinMode(LEDb,OUTPUT);

}
void scankey(){
int A,B;
   pinMode(A,INPUT);
   pinMode(B,INPUT);
if(A==LOW){
    digitalWrite(m0,HIGH);
    }
    else{
      digitalWrite(m0,LOW);
      }

if (digitalRead(m0)==HIGH&&B==LOW){
digitalWrite(LEDa,HIGH);
}
else{
digitalWrite(LEDa,LOW);
}
   if(B==LOW){
    digitalWrite(m1,HIGH);
    }
    else{
      digitalWrite(m1,LOW);
      }

if (digitalRead(m1)==HIGH&&A==LOW){
digitalWrite(LEDb,HIGH);
}
else{
digitalWrite(LEDb,LOW);
}
}
void loop() {
scankey();

}


无验证,你试下,AB要接上拉电阻.

qfdc 发表于 2017-11-14 09:53:09

本帖最后由 迷你强 于 2017-11-14 12:44 编辑


//昨天的未能实现,重定义了一下能通过了。

int m0=9;   //辅助点
int m1=10;//辅助点
int LEDa=11;
int LEDb=12;

void setup() {
pinMode(4,INPUT_PULLUP);
pinMode(5,INPUT_PULLUP);
pinMode(m0,OUTPUT);
pinMode(m1,OUTPUT);
pinMode(LEDa,OUTPUT);
pinMode(LEDb,OUTPUT);

}
void scankey(){
int A,B;
A=digitalRead(4);   
B=digitalRead(5);

if(A==LOW&&digitalRead(m1)==LOW){
   digitalWrite(m0,HIGH);
    }
else{
   digitalWrite(m0,LOW);
   }

if (digitalRead(m0)==HIGH&&B==LOW){
digitalWrite(LEDa,HIGH);
}
else{
digitalWrite(LEDa,LOW);
}
   if(B==LOW&&digitalRead(m0)==LOW){
digitalWrite(m1,HIGH);
   }
else{
digitalWrite(m1,LOW);
   }

if (digitalRead(m1)==HIGH&&A==LOW){
digitalWrite(LEDb,HIGH);
}
else{
digitalWrite(LEDb,LOW);
}
}
void loop() {
scankey();
}

安洛那基 发表于 2017-11-15 00:24:12

qfdc 发表于 2017-11-14 09:53

//昨天的未能实现,重定义了一下能通过了。



感谢你的解答,不过我有个疑问
LEDa、b是接灯泡的,然后接角4、5是按钮,那两个辅助点m0、m1需要接东西吗?

qfdc 发表于 2017-11-15 10:43:42

辅助点m0、m1不需要接东西。我也是刚学。

安洛那基 发表于 2017-11-15 17:50:25

qfdc 发表于 2017-11-15 10:43
辅助点m0、m1不需要接东西。我也是刚学。

那我想再问一下设辅助点的用意是什么呢?

qfdc 发表于 2017-11-15 18:55:47

我也是初学,我用PLC的方法去解与门电路,可能用在这里不合适,但可以用,以后多学看有没更好的办法。m0,M1用于当A按下先变高电平,再加上B按下后灯才能变高电平。
页: [1]
查看完整版本: 当按的按钮的顺序不同时,要如何让不同的灯亮起来?