流水灯出现问题

2018-01-191.3万
AI 快速预览详细 收起
本文讨论了初学者在使用Arduino实现流水灯拖尾效果时遇到的具体问题。代码中使用了PWM控制多个LED灯的亮度,但经过几次循环后,部分LED灯出现了不亮或常亮的问题。文章详细分析了问题原因,并提供了解决方案,通过调整`analogWrite`和`digitalWrite`的顺序,确保LED灯在多次循环后仍能正常工作。适合初学者和STEM教育场景,帮助用户快速定位并修复问题。
初学Arduino,在练习流水灯的时候遇到了问题
const int Nbrleds = 6;
const int ledPins[] = {3,5,6,9,10,11};
const int wait = 35;
const int top = 40;
const int mid = 20;
const int bom = 10;
void setup(){
  for (int led = 0;led < Nbrleds;led++)
  {pinMode(ledPins[led],OUTPUT);}
}
void loop(){
for (int led = 0;led<Nbrleds - 1;led++)
{ analogWrite(ledPins[led],top);
delay(wait);
analogWrite(ledPins[led+1],top);
  analogWrite(ledPins[led],mid);
delay(wait);
  analogWrite(ledPins[led+2],top);
analogWrite(ledPins[led+1],mid);
  analogWrite(ledPins[led],bom);
  delay(wait);
digitalWrite(ledPins[led],LOW);
delay(wait*3);
}
for (int led = Nbrleds - 1;led > 0;led--)
{ analogWrite(ledPins[led],top);
delay(wait);
analogWrite(ledPins[led - 1],top);
  analogWrite(ledPins[led],mid);
delay(wait);
analogWrite(ledPins[led - 2],top);
analogWrite(ledPins[led - 1],mid);
  analogWrite(ledPins[led],bom);
  delay(wait);
digitalWrite(ledPins[led],LOW);
delay(wait*3);
}
}


想用pmw实现拖尾效果,期初程序运行没有问题,灯可以正常流动,大概10次之后10、9灯就不亮了。又过了几次循环,11、5、3灯变成了常亮。不知道哪里出现的问题,请各位大神指点,谢谢

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -