Arduino控制灯与蜂鸣器

最近在学习Arduino的简单器件组合
实验内容
按下按键,灯开始变换颜色,
当红灯亮了蜂鸣器响,蓝灯亮起时都不响

const int BLUE=11; //声明变量,蓝灯引脚接在第11针脚;
const int RED=12; //声明变量,红灯引脚接在第12针脚;
const int BUTTON=7;//声明变量,按钮接在第7针脚;
const int voice=10;//声明变量,声音接在第10针脚;
int val=0; //声明变量,用来存储按钮返回值HIGH或者LOW;
int val_old=0;//声明变量,存储上一次按钮返回值;比对val和val_old的值,来判断按钮是按下还是抬起
       //val==LOW && val_old==HIGHT 抬起状态;val==HIGH && val_old==LOW 按下状态;
int state=0;//0 off,1 on 声明变量,起到中转的作用,小技巧;
void setup() //初始化;
{
  pinMode(BLUE,OUTPUT); //定义LED灯输出模式;
  pinMode(RED,OUTPUT); //定义LED灯输出模式;
  pinMode(BUTTON,INPUT);//定义BUTTON为输入模式;
  pinMode(voice,OUTPUT);//定义VOICE为输出模式
}

void loop()
 {
  val=digitalRead(BUTTON);//读取数字针脚的值;
    if((val==HIGH) && (val_old==LOW))//比较前一次和现在的按钮返回的值,
                                     //只有现在按下按钮这个状态下,才改变state的值
  {
    state=1-state;
  }
  if((val==LOW && val_old==HIGH)) //去抖的作用,一般10-15ms;
    {
      delay(10);
    }
  val_old=val;//把现在按钮返回的值赋予val_old;
  if(state==1)//控制灯开关;
    {
      digitalWrite(BLUE,HIGH);//如果蓝色亮起红色暗
      digitalWrite(RED,LOW);
      if(digitalRead(RED)==LOW)//红灯暗了则蜂鸣器不响
      digitalWrite(voice,LOW);
       delay(1000);//延迟1s
      digitalWrite(BLUE,LOW);//如果蓝灯暗红灯亮
      digitalWrite(RED,HIGH);
       if(digitalRead(RED)==HIGH)//红灯亮了
      digitalWrite(voice,HIGH);//蜂鸣器响
      delay(1000);


    }
   else
   {
      digitalWrite(BLUE,LOW);//如果红蓝灯都不亮
      digitalWrite(RED,LOW);
      digitalWrite(voice,LOW);//蜂鸣器也不响

   }

}

参考来源:https://blog.csdn.net/nkd50000/article/details/80176039

  • 1
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值