Форум программистов, компьютерный форум, киберфорум
Наши страницы
Arduino
Войти
Регистрация
Восстановить пароль
 
Elodreip
0 / 0 / 0
Регистрация: 04.12.2017
Сообщений: 1
1

Программирование RGB ленты на Arduino

04.12.2017, 22:25. Просмотров 409. Ответов 2

Доброго здравия!

Интересует создание рандомайзера для RGB ленты. Нужен полный охват всех цветов (16,5 млн) в рандомном порядке,переключение цвета с помощью плавного перехода(чтобы R,G,B изменялись с дискретностью в единицу)

Есть такой исходник, который делает переход цветов, но по ограниченному периоду.(Охватывает всего лишь до трёх тысяч цветов)
Есть идея, что можна реализовать это, как в бильярде, а именно в векторном виде, чтобы вектор отбивался от граней куба.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <time.h>
int a1,a2,a3,c1,c2,c3,l;
void setup() {
  Serial.begin(9600);
  // put your setup code here, to run once:
 srand(time(NULL));
  a1=rand() %255+1;
  analogWrite(3, a1);
  a2=rand() %255+1;
  analogWrite(5, a2);
  a3=rand() %255+1;
  analogWrite(6, a3);
  
c1=1;
c2=0;
c3=1;
  
 
}
 
void loop() {
  // put your main code here, to run repeatedly:
//Serial.print("a1=");
Serial.print(a1);
//Serial.print(" a2=");
Serial.print(" ");
Serial.print(a2);
//Serial.print(" a3=");
Serial.print(" ");
Serial.print(a3);
Serial.print(" ");
Serial.print(c1);
Serial.print("\n");
delay(10);
  
 
  if(0<=a1&&a1<=5)
  {c1=1;}
  else if(250<=a1&&a1<=255)
  {c1=0;}
   if(0<=a2&&a2<=5)
  {c2=1;}
  else if(250<=a2&&a2<=255)
  {c2=0;}
   if(0<=a3&&a3<=5)
  {c3=1;}
  else if(250<=a3&&a3<=255)
  {c3=0;}
  analogWrite(3, a1);
  if(c1==1)
  {
    l=rand() % 5 +1;
    a1+=l;;
  }
  else
  {
    l=rand() % 5 +1;
    a1-=l;;
  }
  delay(25);
  analogWrite(5, a2);
  if(c2==1)
  {l=rand() % 5 +1;
    a2+=l;;
  }
  else
  {l=rand() % 5 +1;
    a2-=l;;
  }
  delay(2);
   analogWrite(6, a3);
  if(c3==1)
  {l=rand() % 5 +1;
    a3+=l;;
  }
  else
  {l=rand() % 5 +1;
    a3-=l;;
  }
  delay(2);
//delay (500);
 
}
Добавлено через 54 минуты
Представте себе куб, три оси которого R, G, B. Каждый канал имеет 256 значений интенсивности, в сумме мы получаем куб с 16,7 млн возможными оттенками цветов. Возьмем любую ячейку в этом кубе, для плавного изменения цвета мы должны перемещатся через каждую ячейку, но в какую сторону это должно выбираться произвольно. Например, возможные перемещения: [55,100,30] -> [54,101,31]->[53,100,32]->...и т.д. Важна именно рандомизация направленя перемещения ячейки в этом кубе.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2017, 22:25
Ответы с готовыми решениями:

Определение цвета пикселя под курсором и контроль RGB ленты на Arduino
Доброго времени суток уважаемые форумчане! Как получить цвет пикселя под...

Arduino nano v 3.0 и светодиодные ленты
Здравствуйте, у меня есть arduino nano и 4 свет. Аналоговые ргб ленты и...

Rgb matrix (64х32) P3 анализатор спектра (Arduino)
Здравствуйте форумчане! Я студент, многих тонкостей не знаю, так что не...

Управление RGB LED 12V лентой Arduino MEGA2560 транзистором TIP-120
Доброго времени суток. Сразу предупрежу, что с физикой дружу плохо и со...

Программирование Arduino на Python
Доброго времени суток, уважаемые программисты! Подскажите, пожалуйста, какую...

2
Mirmik
techpriest
623 / 204 / 55
Регистрация: 27.02.2014
Сообщений: 1,081
06.12.2017, 11:13 2
Так в чем ваш вопрос?
Идея с биллиярдом вполне ничего.
0
ValeryS
Модератор
7372 / 5573 / 707
Регистрация: 14.02.2011
Сообщений: 18,938
06.12.2017, 12:18 3
Цитата Сообщение от Elodreip Посмотреть сообщение
как в бильярде, а именно в векторном виде, чтобы вектор отбивался от граней куба.
смотри в сторону HSV
https://ru.wikipedia.org/wiki/HSV_(цветовая_модель)
Цитата Сообщение от Elodreip Посмотреть сообщение
Представте себе куб, три оси которого R, G, B.
В RGB это реализовать достаточно сложно

Добавлено через 1 минуту
Цитата Сообщение от Elodreip Посмотреть сообщение
Нужен полный охват всех цветов (16,5 млн)
А ты их увидишь?

Добавлено через 1 минуту
Цитата Сообщение от Elodreip Посмотреть сообщение
a1=rand() %255+1;
а сделать вот так
C++
1
a1=rand() %256;
Заратустра не позволяет?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2017, 12:18

FLProg. Программирование на LD/FBD под Arduino
Появился новый проект по разработке среды программирования для Arduino. Проект...

Модуль распознавания речи + Arduino Pro mini + Arduino MP3-Sheild
Список компонентов: 1).Модуль распознавания речи.(напряжение питания от 4,5 до...

Arduino UNO. Как работать c RFID-сканнером и Arduino на одном Serial-порту?
Рас уж тут речь зашла об ардуине и многопоточности COM порта, думаю могу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru