四、按钮的用法

 独立按键未按下时只有两组引脚连接,按下之后,四个引脚连接在一起。未按下时在桥的同侧共通,不同侧不共通。按下时都共通。所以可以利用这一特性给单片机充当开关。当按键同侧有电压时,将另一侧与引脚相连,当按键按下时引脚的电平会被拉高,此时只需要检测引脚的电平状态就能判断按键是否按下,若按下时单片机执行什么操作,本例是让它点灯。

 

按住按钮点灯代码 

int buttonState = 0;

void setup()
{
  pinMode(2, INPUT);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
  // 读取2引脚电平状态并储存在buttonState中
  buttonState = digitalRead(2);
  // 判断按钮是否按下
  if (buttonState == HIGH) {
    // 按下点灯
    digitalWrite(LED_BUILTIN, HIGH);
  } else {
    //没按下关灯
    digitalWrite(LED_BUILTIN, LOW);
  }
  delay(10); //延时

 按一次按键led灯状态翻转

int buttonState = 0;	//初始化状态储存值

void setup()	//初始化函数
{
  pinMode(2, INPUT);	//初始化2引脚为输入模式
  pinMode(LED_BUILTIN, OUTPUT);	  //初始化13引脚为输入模式
  Serial.begin(9600);	//打开串口通讯
}

void loop()		//循环主函数
{

  buttonState = digitalRead(2);//读取2引脚的电平状态并储存在buttonState中
  if (buttonState == HIGH) {	//判断函数
    delay(100);	//延时函数
    if(buttonState == HIGH){	//二次判断函数消抖
    	if(digitalRead(13)==LOW){	//led反转判断
    		digitalWrite(LED_BUILTIN, HIGH);
        }
    	else{	//led反转判断
      		digitalWrite(LED_BUILTIN, LOW);
    	}
    while(buttonState==digitalRead(2));		//循环按键消抖
    }
    Serial.println(buttonState);	//串口通信打印出2引脚电平状态
  } 
  delay(10); //延时函数
}

 当按键按下时由于是弹簧金属触片接触瞬间存在接触不良的情况,电平状态混乱,因此我们设计延时并使它二次判断减少接触误差,当时还是会存在误差的,所以我们用while循环使它一直卡在电平稳定的时段。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值