程序问题-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 595|回复: 2

[已解决] 程序问题

[复制链接]
发表于 2022-1-31 23:01 | 显示全部楼层 |阅读模式
本帖最后由 honghonglin 于 2022-2-1 00:12 编辑

int led = 9;           
int brightness = 0;   
int fadeAmount = 5;   
unsigned long previousMillis = 0;        
const long interval = 50;

void setup() {
  pinMode(led, OUTPUT);
}

void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval)
  {
    analogWrite(led, brightness);
    brightness = brightness + fadeAmount;
    if (brightness <= 0 || brightness >= 255) {
      fadeAmount = -fadeAmount;
  }
}
}

为啥led灯没有渐变的效果?就一直是一个亮度。
把millis换成delay就可以。。。
 楼主| 发表于 2022-2-1 00:12 | 显示全部楼层
shouzama 发表于 2022-2-1 00:04
程式邏輯有錯
1.previousMillis 恆為 0 從未更新,
  會使條件永遠成立,亮度瞬間完成變化

是的,我看了我和示例的区别,if里面少加了句previousMillis = currentMillis;
加上就正常了,谢谢大佬
发表于 2022-2-1 00:04 | 显示全部楼层
程式邏輯有錯
1.previousMillis 恆為 0 從未更新,
  會使條件永遠成立,亮度瞬間完成變化
2.既然 currentMillis = millis(),
  if 條件式直接用 millis() 去算不是
  更簡單,設個 currentMillis 多此一舉?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 15:59 , Processed in 0.070747 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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