RGB LED 和伺服电机的问题

Issues with RGB led and Servomotors

我正在进行我的第一个 Arduino 项目...在这个项目中,我使用了一个 RGB LED 和 2 个伺服电机...

首先,按照 OOP,我创建了一个 class 来控制我的 RGB LED...

class StatusLED {
  private:
    int pinRed;
    int pinGreen;
    int pinBlue;

  public:
    StatusLED(int pinRed, int pinGreen, int pinBlue);
    void RGB(int redValue, int greenValue, int blueValue);
};

它运行良好,没有问题...

RGB LED 一切正常后,我开始包含我的伺服电机代码...

#include <Servo.h>

#define PIN_RGBLED_R 9
#define PIN_RGBLED_G 10
#define PIN_RGBLED_B 11
#define PIN_SERVO_H 12
#define PIN_SERVO_V 13

Servo servoH;
Servo servoV;
LED led(PIN_RGBLED_R, PIN_RGBLED_G, PIN_RGBLED_B);

void setup() {
  servoH.attach(PIN_SERVO_H);
  servoV.attach(PIN_SERVO_V);
}

在我包含 servo.attach() 行之后,我的 RBG LED 有一个奇怪的行为,我以前使用的颜色,比如浅紫色 RGB(2, 0, 2);,现在不再工作了,当我试了一下,led灯亮了红色。

如果我评论 servo.attach() 行,led 工作正常。

已经尝试过:

有人可以帮帮我吗?

编辑:

为了排除我的LED的疑虑class有问题,我新建一个文件...

#include <Servo.h>

#define PIN_SERVO_H 3
#define PIN_SERVO_V 4
#define PIN_RGBLED_R 9
#define PIN_RGBLED_G 10
#define PIN_RGBLED_B 11

Servo servoH;
Servo servoV;

void setup() {
  pinMode(PIN_RGBLED_R, OUTPUT);
  pinMode(PIN_RGBLED_G, OUTPUT);
  pinMode(PIN_RGBLED_B, OUTPUT);
  servoH.attach(PIN_SERVO_H);
  servoV.attach(PIN_SERVO_V);  
}

void loop() {
  RGB(2,0,2);
  delay(100);
  RGB(4,0,4);
  delay(100);
  RGB(8,0,8);
  delay(100);
  RGB(16,0,16);
  delay(100);
  RGB(0,0,0);
  delay(1000);  
}

void RGB(int redValue, int greenValue, int blueValue) {
  if (redValue > 255) {
    redValue = 255;
  }
  if (greenValue > 255) {
    greenValue = 255;
  }
  if (blueValue > 255) {
    blueValue = 255;
  }
  if (redValue < 0) {
    redValue = 0;
  }
  if (greenValue < 0) {
    greenValue = 0;
  }
  if (blueValue < 0) {
    blueValue = 0;
  }
  // This is a common anode RGB Led.
  // So 255 is OFF and 0 is Fully ON
  analogWrite(PIN_RGBLED_R, 255 - redValue);
  analogWrite(PIN_RGBLED_G, 255 - greenValue);
  analogWrite(PIN_RGBLED_B, 255 - blueValue);
} 

问题还在继续...如果我评论 attach() 的行,led 工作正常,没有评论,它只会以红色闪烁...

根据您的arduino版本,servo.attach仅适用于Pin 9和Pin 10,这与您的RGB管脚冲突。参见 https://www.arduino.cc/en/Reference/ServoAttach