如何在 Arduino 上进行 PWM 接地?

问题描述

我有一条带单个灯光控制器的 RGB LED 灯条。我用了大约一半的卷,剩下的卷没有另一个控制器。

我想看看我是否可以使用 Arduino 来循环显示颜色,只是为了好玩。经过进一步测试,他们控制 RGB 的方式不是通过改变正值,而是通过改变负值。有什么办法可以用 Arduino Mega 做到这一点吗?

我已经尝试将正反两面以正确和相反的方式连接起来,但它仍然无法按我需要的方式工作。

这是我使用的代码。我没有任何 RGB LED,但单独的红色、绿色和蓝色 LED 表明它仍然可以完美工作。

#define Rpin 3  // sets up
#define Gpin 5  // the pins
#define Bpin 7  // for easy writing

void setup() {
  // initialize digital pins for output.
  pinMode(Rpin,OUTPUT);
  pinMode(Gpin,OUTPUT);
  pinMode(Bpin,OUTPUT);
}

int phase = 0;        // phase for loop
int Max = 127;        // easier for
int i = 1;            // changing a lot
int maxAll = Max - i; // of values

int red = 0;          // sets up
int green = 0;        // rgb colors
int blue = Max;       // for loop

// the loop runs over and over to change the rgb values.
void loop() {
 if (phase == 0) {
    red += i;
    blue -= i;
    if (red >= maxAll) {
      phase = 1;
      red = Max;
      blue = 0;
    }
  } else if (phase == 1) {
    red -= i;
    green += i;
    if (green >= maxAll) {
      phase = 2;
      red = 0;
      green = Max;
    }
  } else if (phase == 2) {
    green -= i;
    blue += i;
    if (blue >= maxAll) {
      phase = 0;
      green = 0;
      blue = Max;
    }
  }
  
  analogWrite(Rpin,red);   // write to each led for the ease of typing
  analogWrite(Gpin,green); //
  analogWrite(Bpin,blue);  //
  delay(10);
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)