Arduino 如何使用analogWrite同步点亮四个LED灯

Arduino 如何使用analogWrite同步点亮四个LED灯,arduino,arduino-uno,Arduino,Arduino Uno,我正在使用Arduino Uno,希望使用analogwrite方法同步点亮四个LED,但它们会依次点亮。这是我的密码: int brightness = 0; int fadeAmount = 5; boolean first = true; void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6,

我正在使用Arduino Uno,希望使用analogwrite方法同步点亮四个LED,但它们会依次点亮。这是我的密码:

int brightness = 0;    
int fadeAmount = 5;    
boolean first = true;

void setup()  { 
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
} 
void loop()  {

  if (first) {
    // these should iluminate synchronously
    analogWrite(2, brightness);
    analogWrite(3, brightness);
    analogWrite(4, brightness);
    analogWrite(5, brightness);
  } else {
    // these should iluminate synchronously
    analogWrite(6, brightness);
    analogWrite(7, brightness);
    analogWrite(8, brightness);
    analogWrite(9, brightness);
  }

  brightness = brightness + fadeAmount;

  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ;
    if (brightness == 0) {
      reverseFirst();
    }
  }           

  delay(5);                            
}

void reverseFirst(){
  if (first) {
    first = false;
  } else {
    first = true;
  }
}

analogWrite仅在引脚3、5、6、9、10、11上有效工作,因为它们是PWM引脚。根据analogWrite源代码,如果与analogWrite一起使用,所有其他管脚将默认返回digitalWrite

因此,我怀疑你将无法对其他引脚进行适当的模拟控制,这可能就是为什么不是所有引脚都同时打开的原因


如果亮度对您很重要,那么我建议您只使用真正的PWM引脚。如果您需要超过六个引脚,那么您可以获得模拟扩展器芯片,或者更简单的,您可以查看类似“ShiftPWM”的东西。这是一个库,它使用移位寄存器将脉冲移位到其输出,从而有效地控制LED的亮度。请记住,它不再被维护。

当您说它们按顺序点亮时,您能更具体一些吗?相隔多远?此外,将代码缩减为MWE,这将帮助您诊断问题。将所有应点亮的LED连接到一个引脚?它们一个接一个点亮。我想让它们同时褪去和褪色。谢谢。我实际上需要8个LED。