как сделать ленту синий розовый и желтый

Magich
Offline
Зарегистрирован: 15.07.2019

пытался сделать ну чтота не то если кто может подскажите 

//обзавём каналы
int RedPin = 9;
int GreenPin = 10;
int BluePin = 11;
//заведём переменные текущих значений каналов, и сразу их забьём рандомными значениями 
int ValRed = random(0, 255);
int ValGreen = random(0, 255);
int ValBlue = random(0, 255);

void setup() {                
  pinMode(RedPin, OUTPUT);  //настроим пины каналов на выход
  pinMode(GreenPin, OUTPUT); 
  pinMode(BluePin, OUTPUT); 
  
  analogWrite(RedPin, ValRed);   //и сразу запихает туда первую пачку значений
  analogWrite(GreenPin, ValGreen);
  analogWrite(BluePin, ValBlue);
}

void loop() {
    
  int NewValRed = random(10, 255); //сгенерим новые значения
  int NewValGreen = random(10, 255);
  int NewValBlue = random(10, 255);
  
  //будем крутить пока новые не сравняются с текущими
  while ((ValRed != NewValRed)&(ValGreen != NewValGreen)&(ValBlue != NewValBlue)) {   
//для красного канала      
      if (ValRed < NewValRed){  //если новое больше текущего
        analogWrite(RedPin, ValRed++ ); //то текущий увеличиваем
      };
      if (ValRed > NewValRed) { // если меньше уменьшаем
        analogWrite(RedPin, ValRed-- );
      };
 //для зелёного канала    
     if (ValGreen < NewValGreen){
        analogWrite(GreenPin, ValGreen++ );
      };
     if (ValGreen > NewValGreen) {
        analogWrite(GreenPin, ValGreen-- );
      };  
//для синего канала  
     if (ValBlue < NewValBlue){
        analogWrite(BluePin, ValBlue++ );
      };
     if (ValBlue > NewValBlue) {
        analogWrite(BluePin, ValBlue-- );
      }; 
   delay(10); //чтоб в глазах не рябило подождём 
  }    
}

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Условие цикла никогда не выполнится, так как новые значения присваются до цикла в основном лупе. Нужно или логику переработать или отказаться от while цикла. Или в нем их присваивать, но это все чем то дурным попахивает... В чем основная суть задачи то?

Magich
Offline
Зарегистрирован: 15.07.2019

просто сделать при включения наченала работать лайтбокс  переходил сини>розовы>желтый и так цикл круговорот

sadman41
Offline
Зарегистрирован: 19.10.2016

Уверены, что из синего можно просто попасть в желтый без промежуточных цветов?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

А зачем тогда рандом? И что за лента вообще? Для плавного перехода не нужен рандом и цикл с непонятными условиями. Вы пытаетесь угадать рандомные числа трёх переменных в одном проходе - это маловероятно, почти невозможно. И зачем вы так делаете? Переработайте логику, учитывая что сама функция loop - это и есть бесконечный цикл. 

Magich
Offline
Зарегистрирован: 15.07.2019

друг а можеш написать правельно 

ELITE
ELITE аватар
Offline
Зарегистрирован: 11.01.2018

Magich пишет:

друг а можеш написать правельно 

можно - но это в разделе "Ищу исполнителя"

ваша задача простая - думаю рублей за 500 найдется....

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Magich пишет:

как сделать ленту синий розовый и желтый

Боюсь, что с таким программированием - никак.

Но, способ есть!

Arduino_Pro_Micro
Offline
Зарегистрирован: 08.03.2019

жёлтый = синий + зелёный

розовый = красный +белый

белый = красный + синий +зеленый

синий = синий