请教一个判断开关状态的问题【初学小白】
我在数字输入口连接了一个常闭型的按钮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。
如果连接的按钮开关是个常开型的,数据输出就反了。
请教,如何能做到无论连接常闭/常开哪种按钮开关
都能正确输出设定的数据呢?
Serial.print(val);不就可以了
初始化的时候记住开关状态,程序里用开关状态变化判断,状态与初始化状态不同,输出变化,否者不变。 275891381 发表于 2017-3-29 13:13
Serial.print(val);不就可以了
感谢回答!
可这样输出的仅是开关的状态吧?
按照常闭开关设计的程序,如果换用常开型的,输出的状态就反了吧? killmusic 发表于 2017-3-29 13:34
感谢回答!
可这样输出的仅是开关的状态吧?
按照常闭开关设计的程序,如果换用常开型的,输出的状态就反了 ...
要是开一种状态,关一种状态没不会反呀,要是还开关状态也改变,setup里面检测初始化时候的开关状态吧 275891381 发表于 2017-3-29 14:38
要是开一种状态,关一种状态没不会反呀,要是还开关状态也改变,setup里面检测初始化时候的开关状态吧
嗯是啊,能请教一下具体怎么写吗?谢谢!
新人,一小时才能回复一次帖子,还请见谅:( 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]