求助求助,请问怎么实现多段定时调光-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1741|回复: 4

[已解决] 求助求助,请问怎么实现多段定时调光

[复制链接]
发表于 2021-10-15 17:34 | 显示全部楼层 |阅读模式
本帖最后由 honghonglin 于 2021-10-17 20:13 编辑

大佬们,调光的部分我用了实例里的fade,但是里面用的延时是delay,delay它好像会把我程序里其他控制传感器的部分全停掉了,要怎么解决啊。
还有多段定时的部分也不知道怎么写
发表于 2021-10-16 11:17 | 显示全部楼层
  1. const uint8_t ledPin = 10;
  2. uint8_t duty_value = 0;
  3. uint32_t previosMillis = 0;
  4. void setup() {

  5. }
  6. void loop() {
  7.         if(millis() - previosMillis >= 5) {
  8.                 previosMillis = millis();
  9.                 analogWrite(ledPin, duty_value);
  10.                 duty_value++;
  11.         }
  12. }
复制代码
发表于 2021-10-15 22:05 | 显示全部楼层
millis()套 analogWrite不就行了
 楼主| 发表于 2021-10-15 22:18 | 显示全部楼层
本帖最后由 honghonglin 于 2021-10-15 23:24 编辑
XlinliY.Zhang 发表于 2021-10-15 22:05
millis()套 analogWrite不就行了

感谢大佬,现在我照着withoutdelay那个示例抄了一段,编译成功了,但是电路led一直是亮的没有变化。。。
不知道是不是程序有什么问题
int ledPin = 10;
unsigned long previosMillis = 0;

void fadeOn(unsigned int time,int state_sta,int state_end){
  unsigned long currentMillis = millis();
  while(currentMillis-previosMillis>=time/(state_end-state_sta)&state_sta!=state_end){
    state_sta=state_sta+1;
    analogWrite(ledPin,state_sta);
  }
}

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

void loop(){
   fadeOn(50,0,255);
}
 楼主| 发表于 2021-10-16 21:17 | 显示全部楼层

谢谢大佬
这就回去改改
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 21:50 , Processed in 0.110450 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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