killmusic 发表于 2017-3-29 12:50:30

请教一个判断开关状态的问题【初学小白】

我在数字输入口连接了一个常闭型的按钮

int inpin = 7;
int val;
void setup()
{
Serial.begin(9600);
pinMode(inpin, INPUT_PULLUP);
}
void loop()
{
val = digitalRead(inpin);
if (val == HIGH)
{
    Serial.print("0");
}
else
{
    Serial.print("1");
}
}

开关
按下输出数据A,抬起输出数据B。

如果连接的按钮开关是个常开型的,数据输出就反了。

请教,如何能做到无论连接常闭/常开哪种按钮开关
都能正确输出设定的数据呢?

275891381 发表于 2017-3-29 13:13:25

Serial.print(val);不就可以了

wzqhby 发表于 2017-3-29 13:24:04

初始化的时候记住开关状态,程序里用开关状态变化判断,状态与初始化状态不同,输出变化,否者不变。

killmusic 发表于 2017-3-29 13:34:03

275891381 发表于 2017-3-29 13:13
Serial.print(val);不就可以了

感谢回答!
可这样输出的仅是开关的状态吧?
按照常闭开关设计的程序,如果换用常开型的,输出的状态就反了吧?

275891381 发表于 2017-3-29 14:38:19

killmusic 发表于 2017-3-29 13:34
感谢回答!
可这样输出的仅是开关的状态吧?
按照常闭开关设计的程序,如果换用常开型的,输出的状态就反了 ...

要是开一种状态,关一种状态没不会反呀,要是还开关状态也改变,setup里面检测初始化时候的开关状态吧

killmusic 发表于 2017-3-29 14:53:01

275891381 发表于 2017-3-29 14:38
要是开一种状态,关一种状态没不会反呀,要是还开关状态也改变,setup里面检测初始化时候的开关状态吧

嗯是啊,能请教一下具体怎么写吗?谢谢!
新人,一小时才能回复一次帖子,还请见谅:(

275891381 发表于 2017-3-29 15:20:44

killmusic 发表于 2017-3-29 14:53
嗯是啊,能请教一下具体怎么写吗?谢谢!
新人,一小时才能回复一次帖子,还请见谅

//你这样吧
int inpin=7;
int val,val_old;
void setup()
{
Serial.begin(9600);
pinMode(inpin,INPUT_PULLUP);
delay(100);
val_old=digitalRead(inpin);
}
void loop()
{
      val=digitalRead(inpin);
      if(val!=val_old)
      {
      //按下
      
      val_old=val;
      }
      else
      {
         //松开
         
       }
}
页: [1]
查看完整版本: 请教一个判断开关状态的问题【初学小白】