当按的按钮的顺序不同时,要如何让不同的灯亮起来?
本帖最后由 安洛那基 于 2017-11-17 00:50 编辑小妹我是最近才开始接触的Arduino的
对于程式或接线真的都很不擅长...
但组员们都有其他的工作要做,所以只好让我来制作
所以想要求助高手们
请问当我现在有“两个按钮”和“两个灯”
当按的顺序不同时,要怎么亮不同的灯呢?
例如:
先按住甲不放,再按乙时,第1个灯亮起,放开时就熄灭
先按住乙不放,再按甲时,第2个灯亮起,放开时就熄灭
有点怕自己解释不清楚
所以我做了一张示意表
希望高手们能够帮帮我
真的很感谢
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要接上拉电阻. 本帖最后由 迷你强 于 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();
}
qfdc 发表于 2017-11-14 09:53
//昨天的未能实现,重定义了一下能通过了。
感谢你的解答,不过我有个疑问
LEDa、b是接灯泡的,然后接角4、5是按钮,那两个辅助点m0、m1需要接东西吗? 辅助点m0、m1不需要接东西。我也是刚学。 qfdc 发表于 2017-11-15 10:43
辅助点m0、m1不需要接东西。我也是刚学。
那我想再问一下设辅助点的用意是什么呢? 我也是初学,我用PLC的方法去解与门电路,可能用在这里不合适,但可以用,以后多学看有没更好的办法。m0,M1用于当A按下先变高电平,再加上B按下后灯才能变高电平。
页:
[1]