arduino led变化(模拟台灯) 单击:开/关 长按:调亮度

//LED是9 , BUTTON是2
int val = 0; //存储输入引脚状态
int old_val = 0; //存储val上一状态数值
int state = 0; //当state=0时关闭LED灯,state=1时开启LED灯
int brightness = 128; //存储方式数值,128为中间值

unsigned long startTime = 0; //按下按钮的开始时间

void setup() {
  pinMode(9, OUTPUT); //设定LED引脚9为输出接口
  pinMode(2, INPUT); //设定BUTTON引脚2为输入接口
}

void loop() {
  val = digitalRead(2); //读取按钮状态并存储至val
  //检测按钮状态变化过程(设定LED灯状态)
  //如果你的按钮开关返回值和我的相反,请修改这个条件语句,将LOW和HIGH交换一下就可以了。
  if ((val == LOW) && (old_val == HIGH)) {
    state = 1 - state; //如果按钮从松开转变为按下状态,则改变state变量的数值
    startTime = millis(); //暂存最后一次按钮按下的开始时间(毫秒)
    delay(10);
  }

  //按住按钮并保持不放(调节亮度)
  //如果你的按钮开关返回值和我的相反,请修改这个条件语句,将LOW换成HIGH就可以了。
  if ((val == LOW) && (old_val == LOW)) {
    //如果按住按钮持续时间超过0.5秒(500毫秒)
    if (state == 1 && (millis() - startTime) > 500) {
      brightness++;//亮度变量逐渐+1
      delay(10);//延时10毫秒避免增加速度过快
      if (brightness > 255) { //255是亮度变量最大值(PWM输出最大值)
        brightness = 0; //如果亮度变量增加后结果大于255,则重新设定成0,灯光亮度由暗到亮
      }
    }
  }
  old_val = val; //存储当前val变量状态,用来判断按钮变化状态
  if (state == 1) 
    analogWrite(9, brightness); //点亮LED灯并设定亮度
  else 
    analogWrite(9, 0); //关闭LED灯
}


转载自

空空雪上琉璃瓦

侵删

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值