极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14772|回复: 6

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

[复制链接]
发表于 2017-3-29 12:50:30 | 显示全部楼层 |阅读模式
我在数字输入口连接了一个常闭型的按钮

[kenrobot_code]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");
  }
}[/kenrobot_code]

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

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

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

回复

使用道具 举报

发表于 2017-3-29 13:13:25 | 显示全部楼层
Serial.print(val);不就可以了
回复 支持 反对

使用道具 举报

发表于 2017-3-29 13:24:04 | 显示全部楼层
初始化的时候记住开关状态,程序里用开关状态变化判断,状态与初始化状态不同,输出变化,否者不变。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-29 13:34:03 | 显示全部楼层
275891381 发表于 2017-3-29 13:13
Serial.print(val);不就可以了

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

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

发表于 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
      {
         //松开
         
       }
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 13:03 , Processed in 0.039228 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表