首页 > 编程知识 正文

柜灯led亮度控制,pwm控制led的亮度

时间:2023-05-05 02:57:25 阅读:216463 作者:976

按下按钮开关可以打开LED灯
再按一遍关闭LED灯
长按按钮可以调节LED灯的亮度
再关闭可以保持当前选择的亮度。

//LED是9 , BUTTON是2int 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灯}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。