Создание легкой анимации для RGB LED Arduino - PullRequest
0 голосов
/ 20 октября 2018

Я делаю управляемую Arduino лампу с RGB.Я пытаюсь добавить плавный переход между каждым цветом, который будет светиться от светодиода.Я не хочу, чтобы каналы были анимированы отдельно.В настоящее время он работает только с одним каналом за раз, а переходы работают только при увеличении яркости.

    const int redpin = 9;
    const int greenpin = 10;
    const int bluepin = 11;
    int currRed = 0;
    int currGreen = 0;
    int currBlue = 0;
    int dur = 1000;

    void setup() {
      pinMode(redpin, OUTPUT);
      pinMode(greenpin, OUTPUT);
      pinMode(bluepin, OUTPUT);
      Serial.begin(9600);
    }

    void loop() {
      if (Serial.available()) {
      int red = Serial.parseInt();
      int green = Serial.parseInt();
      int blue = Serial.parseInt();

      if (Serial.read() == '\n') {
        red = constrain(red, 0, 255);
        green = constrain(green, 0, 255);
        blue = constrain(blue, 0, 255);
        }

      updateRGBfade(redpin, red, dur, currRed);
      updateRGBfade(greenpin, green, dur, currGreen);
      updateRGBfade(bluepin, blue, dur, currBlue);
      }
    }



   void updateRGBfade(int pin, int col, int animdur, int currcol) {
      if (col > currcol) {
        for (int setto = currcol; setto < col; setto++) {
          analogWrite(pin, setto);
          delay(5);
        }
      }
      if (col < currcol) {
        for (int setto = currcol; setto > col; setto=setto-1) {
          analogWrite(pin, setto);
          delay(5);
        }
      }
    }

1 Ответ

0 голосов
/ 20 октября 2018

Currcolors (currRed, currGreen и currBlue) видимы постоянными и равными нулю.Так что функции updateRGBfade запускаются только в первом случае, если блок, потому что currcol всегда равен нулю, и я думаю, что col больше нуля, как обычно.Так что функция только запускает процесс увеличения.Вы можете добавить следующие строки в функции, если блоки ниже задержки (5) с

if(pin == redpin){
currRed = currcol;
}else if(pin == greenpin){
currGreen = currcol;
}else if(pin == bluepin ){
currBlue = currcol;
}

извините за мой плохой английский.

...