Электронный компонент:Набор Rainbow Cube Kit

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 1852 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Набор Rainbow Cube Kit[1] [2]

Набор Rainbow Cube Kit – это 3-мерный радужный куб с 8-миллиметровыми RGB-светодиодами. Всего в нем используется 64 светодиода, расположенных по принципу 4х4х4. Набор Rainbow Cube Kit можно использовать для создания разных визуальных эффектов, но для этого к нему также нужно будет подключить контроллер Rainbowduino. Кроме того, Rainbow Cube Kit оснащен встроенным LDO-регулятором (3.3 вольта, 1 ампер), а также XBee-совместимым сокетом, который можно использовать для беспроводного подключения Rainbowduino к ПК или Arduino.

Куб продается в виде комплекта:

Rainbowcuben.jpg

В собранном и рабочем виде куб выглядит так:

Rainbow-3.jpg

Содержимое набора

Rainbow-2.jpg
  1. 8-миллиметровые RGB-светодиоды – 70 шт.
  2. Панель для куба – 1 шт.
  3. Платы для светодиодов – 4 шт.
  4. Боковые платы A – 4 шт.
  5. Боковые платы B – 4 шт.
  6. 2,54-миллиметровые 40-контактные гребешки типа «папа» – 5 шт.
  7. 2,54-миллиметровые 40-контактные гребешки типа «мама» – 2 шт.
  8. 2,54-миллиметровые 16-контактные гребешки типа «мама» – 3 шт.
  9. 2-миллиметровые 10-контактные гребешки типа «мама» – 2 шт.
  10. 8-контактные гребешки типа «мама» – 5 шт.
  11. Гребешок типа «мама» 2х3 – 1 шт.
  12. Питающий JST-кабель – 1 шт.
  13. 3,5-миллиметровый 4-контактный зеленый винтовой зажим – 1 шт.
  14. 3,5-миллиметровый DC-разъем – 1 шт.
  15. 3-миллиметровый красный светодиод – 1 шт.
  16. 3-миллиметровый зеленый светодиод – 1 шт.
  17. Резисторы (1 кОм, 1/8 ватта) – 4 шт.
  18. Резисторы (10 кОм, 1/8 ватта) – 1 шт.
  19. Резисторы (15 кОм, 1/8 ватта) – 1 шт.
  20. Линейный регулятор напряжения – 1 шт.
  21. Электролитические конденсаторы – 2 шт.

Функционал

  • 8-миллиметровые матовые RGB-светодиоды
  • Светодиоды расположены по принципу 4х4х4
  • XBee-совместимый сокет
  • Наличие LDO-регулятора (3.3 вольта, 1 ампер) для питания куба нерегулируемым постоянный током с напряжением 6-9 вольт. Используйте его, когда питание идет не от USB
  • Наличие контактов с общим катодом для 8 красных, 8 зеленых и 8 синих светодиодов
  • Наличие восьми VCC-контактов на гребешке 2х16
  • Возможность управления при помощи многоканального ШИМ-контроллера светодиодов вроде Rainowduino (8 х 8кр, 8син, 8зел)

Варианты применения

  • Цветной LED-дисплей – генерируйте разные цвета, смешивая разные яркости красного, синего и зеленого каналов
  • Лампа настроения или ночная лампа
  • Использование в художественных целях

Схема

Куб состоит из двух главных частей: панели (платы), которая служит основой для куба, и самого куба, состоящего из 4 плат для светодиодов и 8 боковых плат.

Схему куба смотрите по ссылкам ниже:

Характеристики

  • Рабочее напряжение – 3,3 вольта
  • Светодиоды – 8-миллиметровые RGB-светодиоды с общим катодом; 4 провода (самый короткий – для синего канала, для зеленого канала, самый длинный – анод, для красного канала); максимальный прямой ток составляет 20 мА

Распиновка

Доступ ко всем контактам куба можно получить на панели, находящейся в его основе:

Базовая панель куба (вид снизу)
Rainbow pin diagram.png
XBee PinOut.jpg
  • DC-разъем для питания; средний контакт – VIN (6-9 вольт постоянного тока), боковая «бочка» – GND
  • 4-контактный (зеленый) винтовой зажим; 2 контакта GND и 2 контакта VIN

Размеры

В собранном состоянии размеры куба составляют примерно 10 (длина), 10 (ширина) и 12 (высота) сантиметров.

Объясняющие схемы

Ниже представлено несколько схем куба – чтобы было проще понять, как он работает. По сути, куб – это 64 RGB-светодиода, которые сформированы в структуру, состоящую из 8 общих анодов (контакты с положительным напряжением) и 8 общих катодов (контакты с GND) для каждого цвета (красного, зеленого и синего).

Полную схему RGB-куба, представленную в виде двухмерной светодиодной матрицы, смотрите ниже. Цифры 1-32 обозначают номера контактов на гребешке 2х16, схема которого показана выше, в разделе «Распиновка».

Схема 1 – куб в виде 2-мерной матрицы

Схема ниже показывает, как 64 светодиода, расположенные в четырех 2-мерных плоскостях, подключаются друг к другу и формируют 3-мерный куб:

Схема 2 – куб с точки зрения драйвера

Три примера нумерации из схемы 2 можно посмотреть на фото ниже:

3D-координаты нескольких светодиодов

Чтобы узнать, как светодиоды из этих схем соотносятся друг с другом, проделайте следующее:

  • Найдите координаты 2D-XY на схеме 2
  • Соотнесите эти координаты с координатами X и Y на схеме 1, чтобы узнать, каким образом управляется этот светодиод (т.е. расположение катодов и контакта VCC)

К примеру, светодиод с ZXY-координатами «1,0,3» (схема 2) – это светодиод с координатами «6,3» (схема 1). VCC-контактом этого светодиода является 31, а катодами для R, G и B являются, соответственно, контакты 12, 25 и 4.

Rainbowduino V3.0

Rainbowduino – это контроллерная плата, совместимая с Arduino и оснащенная многоканальным светодиодным драйвером. С ее помощью можно управлять матрицей RGB-светодиодов 8x8 или кубом RGB-светодиодов 4х4х4 в режиме общего анода. Плата Rainbowduino укомплектована двумя 12-канальными (R/G/B x 4) чипами MY9221, которые генерируют адаптивную импульсно-плотностную модуляцию. Кроме того, Rainbowduino V3.0 оснащена интерфейсом I2C для каскадного подключения дополнительных плат.

На Rainbowduino V3.0 записан загрузчик Arduino, благодаря чему ее можно программировать при помощи IDE Arduino. Кроме того, в отличие от других драйверов для управления светодиодами, Rainbowduino оснащена чипом FT232RL (USB-UART), который упрощает загрузку скетчей.

Rainbowduino V3.0 (вид сверху)


Rainbowduino V3.0 (вид снизу)


Функционал

  • Наличие двух 16-контактных гребешков для подключения многоканальных светодиодов
  • Постоянная сила тока (20,8 мА)
  • Возможность управлять кубом RGB-светодиодов 4х4х4 и матрицей RGB-светодиодов 8х8 (т.е. 192 светодиодами)
  • Встроенный чип USB-UART (FT232RL)
  • Встроенный регулятор напряжения (5 вольт, 1 ампер)

Варианты применения

Характеристики

  • Постоянная сила выходного тока – 20,8 мА
  • Максимальное количество управляемых светодиодов – 192 (т.е. 8х8х3)

Более подробно об Rainbowduino читайте в соответствующей статье.

Питающий адаптер

Потребуется качественный настенный адаптер, выдающий 6.5 вольт и 2 ампера, а также способный конвертировать переменный ток в постоянный. Кроме того, необходимы DC-разъем, совместимый с Rainbowduino, а также совместимость с Arduino и Seeeduino. Адаптер также должен быть способен работать с входным напряжением 100-240 вольт (переменный ток).

Подойдет вот такая модель – TOL113C30.

Кабель MiniUSB

Потребуется 110-сантиметровый кабель MiniUSB. Он будет использоваться для программирования Rainbowduino через ПК.

Подойдет такая модель – ARD112C5B.

Использование

Корпус для куба Rainbow Cube Kit сделан из акрила, поэтому будьте внимательны при его разборке, т.к. крепежи могут не выдержать сильного растягивающего усилия. Вынимая крепеж, левой рукой толкайте ножки крепежа внутрь, а правой – тяните за его «гребешок». Более подробно смотрите на картинке ниже:

Rainbow Cube key.jpg

Сборка

Чтобы собрать конструкцию, проделайте следующее:

  • Подключите два 16-контактных гребешка, установленных на куб, к Rainboduino, как показано на картинке ниже:
Расположение двух 16-контактных гребешков


Rainbowduino, правильно подключенная к кубу
  • Подключите к Rainbowduino кабель MiniUSB (для программирования через ПК)

Программирование

Давайте начнем с простого примера:

  • Загрузите библиотеку «Rainbowduino V3.0»
  • Откройте скетч «Cube1.pde» (его копию смотрите ниже)
  • Скомпилируйте и загрузите скетч на Rainbowduino
  1. /*
  2. Пример библиотеки «Rainbowduino v3.0»:  Cube1
  3.  
  4. Выставляет пиксели в трехмерном пространстве (куб 4x4x4)
  5. */
  6.  
  7. #include <Rainbowduino.h>
  8.  
  9. void setup()
  10. {
  11.   Rb.init();  //  инициализирует драйвер Rainbowduino
  12. }
  13.  
  14. void loop()
  15. {
  16.   //  задаем координаты (Z,X,Y):(0,0,0) для синего пикселя,
  17.   //  а также цвет, используя 24-битный RGB-код:
  18.   Rb.setPixelZXY(0,0,0,0x0000FF);
  19.  
  20.   //  задаем координаты (Z,X,Y):(0,3,0) для красного пикселя,
  21.   //  а также цвет, используя байты для R, G и B:
  22.   Rb.setPixelZXY(0,3,0,0xFF,0,0);
  23.  
  24.   //  задаем координаты (Z,X,Y):(3,0,3) для зеленого пикселя,
  25.   //  а также цвет, используя 24-битный RGB-код:
  26.   Rb.setPixelZXY(3,0,3,0x00FF00);
  27. }

В результате получаем следующее:

Демо-скетч «Cube1.pde» в действии

Функции

В скетче-примере выше используются некоторые из API ниже:

  • Функция init(). Инициализирует драйвер. Используется, как правило, самой первой
  • Функция setPixelZXY(Z,X,Y,R,G,B). Задает координаты и яркость для красного (R), зеленого (G) и синего (B) каналов в RGB-светодиоде. Для значений яркости нужно использовать 8-битные значения. Тип данных всех шести аргументов – unsigned char
  • Функция blankDisplay(). Гасит все светодиоды

Демо-скетчи

Ниже будет представлено несколько скетчей, демонстрирующих использование разных функций библиотеки Rainbowduino.

Работа с горизонтальными плоскостями куба

Этот скетч объясняет, как задавать координаты (Z,X,Y) для RGB-светодиода. В нем мы при помощи функции setPixelZXY() окрасим слой 0 в зеленый цвет, а слой 3 – в синий.

  1. /*
  2. Пример библиотеки «Rainbowduino v3.0»:  Cube2
  3.  
  4. Выставляет пиксели в трехмерном пространстве (куб 4x4x4)
  5. */
  6.  
  7. #include <Rainbowduino.h>
  8.  
  9. void setup()
  10. {
  11.   Rb.init();  //  инициализируем драйвер Rainbowduino
  12. }
  13.  
  14. unsigned int z,x,y;
  15.  
  16. void loop()
  17. {
  18.   for(x=0;x<4;x++)
  19.   {
  20.     for(y=0;y<4;y++)
  21.     {
  22.      //  окрашиваем слой 0 в зеленый, используя 24-битный RGB-код:
  23.      Rb.setPixelZXY(0,x,y,0x00FF00);
  24.     }
  25.   }  
  26.  
  27.   for(x=0;x<4;x++)
  28.   {
  29.     for(y=0;y<4;y++)
  30.     {
  31.      //  окрашиваем слой 0 в синий, используя 24-битный RGB-код:
  32.      Rb.setPixelZXY(3,x,y,0x0000FF);
  33.     }
  34.   }
  35. }

В результате должно получиться примерно следующее:

Демо-скетч «Cube2.pde» в действии

Случайные цвета

В этом демо-скетче все RGB-светодиоды куба окрашиваются в случайные цвета. Далее каждые пять секунд цвет всех RGB-светодиодов меняется на случайный.

  1. /*
  2. Пример библиотеки «Rainbowduino v3.0»:  Cube3
  3.  
  4. Выставляет пиксели в трехмерном пространстве (куб 4x4x4)
  5. */
  6.  
  7. #include <Rainbowduino.h>
  8.  
  9. void setup()
  10. {
  11.   Rb.init();  //  инициализируем драйвер Rainbowduino
  12. }
  13.  
  14. unsigned int z,x,y;
  15.  
  16. void loop()
  17. {
  18.  for(z=0;z<4;z++)
  19.  {
  20.   for(x=0;x<4;x++)
  21.   {
  22.     for(y=0;y<4;y++)
  23.     {
  24.      //  «рисуем» случайные цвета, используя байты для R, G и B:
  25.      Rb.setPixelZXY(z,x,y,random(0xFF),random(0xFF),random(0xFF));
  26.     }
  27.   }
  28.  }
  29. delay(5000);
  30. Rb.blankDisplay();  //  гасим все светодиоды
  31. }

В результате должно получиться следующее:

Демо-скетч «Cube3.pde» в действии

Ночная лампа / Лампа настроения

  1. /*
  2.  
  3. Пример библиотеки «Rainbowduino v3.0»: Лампа настроения
  4.  
  5. */
  6.  
  7. #include <Rainbowduino.h>
  8.  
  9.  
  10. // массив для конвертации из HSV в RGB:
  11.  
  12. unsigned char RED[64] = {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,238,221,204,188,171,154,137,119,102,85,
  13. 68,51,34,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,35,52};
  14.  
  15. unsigned char GREEN[64] = {0,17,34,51,68,85,102,119,136,153,170,187,204,221,238,255,255,255,255,255,255,255,255,255,255,255,255,
  16. 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,238,221,204,188,170,154,136,120,102,86,68,52,34,18,0,0,0,0};
  17.  
  18. unsigned char BLUE[64] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,34,52,68,86,102,120,136,154,170,188,
  19. 204,221,238,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255};
  20.  
  21. void setup()
  22. {
  23.   Rb.init();  //  инициализируем драйвер Rainbowduino
  24. }
  25.  
  26. unsigned int z,x,y;
  27. void loop()
  28. {
  29.  
  30. for(z=0; z<64 ;z++)
  31. {
  32.  for(x=0;x<8;x++)
  33.  {
  34.     for(y=0;y<8;y++)
  35.     {
  36.      //  «рисуем» случайные цвета, используя байты для R, G и B:
  37.      //Rb.setPixelZXY(z,x,y,RED[i],GREEN[i],BLUE[i]);
  38.      Rb.setPixelXY(x,y,RED[z],GREEN[z],BLUE[z]);
  39.     }
  40.  }
  41.  delay(100);
  42. }
  43.  
  44. for(z=63; z > 0 ;z--)
  45. {
  46.  for(x=0;x<8;x++)
  47.  {
  48.     for(y=0;y<8;y++)
  49.     {
  50.      // «рисуем» случайные цвета, используя байты для R, G и B:
  51.      //Rb.setPixelZXY(z,x,y,RED[i],GREEN[i],BLUE[i]);
  52.      Rb.setPixelXY(x,y,RED[z],GREEN[z],BLUE[z]);
  53.     }
  54.  }
  55.  delay(100);
  56. }
  57.  
  58. }

Эффект плазмы

  1. /*
  2.  
  3. Пример библиотеки «Rainbowduino v3.0»: Трехмерный эффект плазмы
  4.  
  5. */
  6.  
  7. #include <Rainbowduino.h>
  8.  
  9. // массив для конвертации из HSV в RGB:
  10.  
  11. unsigned char RED[64] = {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,238,221,204,188,171,154,137,119,102,85,
  12. 68,51,34,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,35,52};
  13.  
  14. unsigned char GREEN[64] = {0,17,34,51,68,85,102,119,136,153,170,187,204,221,238,255,255,255,255,255,255,255,255,255,255,255,255,
  15. 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,238,221,204,188,170,154,136,120,102,86,68,52,34,18,0,0,0,0};
  16.  
  17. unsigned char BLUE[64] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,34,52,68,86,102,120,136,154,170,188,
  18. 204,221,238,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255};
  19.  
  20. unsigned char plasma[4][4][4];
  21.  
  22. void setup()
  23. {
  24.   Rb.init();  //  инициализируем драйвер Rainbowduino
  25.  
  26.   for(unsigned char x = 0; x < 4; x++)
  27.   {
  28.     for(unsigned char y = 0; y < 4; y++)
  29.     {
  30.       for(unsigned char z = 0; z < 4; z++)
  31.        {
  32.         int color = int(32.0 + (32.0 * sin(x / 1.0))+ 32.0 + (32.0 * sin(y / 1.0)) + 32.0 + (32.0 * sin(z / 1.0))) / 3;
  33.         plasma[x][y][z] = color;      
  34.        }  
  35.     }
  36.   }
  37. }
  38.  
  39. unsigned char x,y,z,colorshift=0;
  40.  
  41. void loop()
  42. {
  43. for(x=0;x<4;x++)  
  44. {
  45.  for(y=0;y<4;y++)  
  46.  {
  47.   for(z=0;z<4;z++)
  48.     {
  49.      //  меняем цвета, используя байты для каналов R, G и B:
  50.      Rb.setPixelZXY(z,x,y,(RED[plasma[x][y][z] + colorshift]) % 256,(GREEN[plasma[x][y][z] + colorshift]) % 256,(BLUE[plasma[x][y][z] + colorshift]) % 256);
  51.     }
  52.  }
  53. }
  54.  delay(100);
  55.  colorshift=  colorshift + 1;
  56. }

В результате должно получиться примерно следующее:

Демо-скетч «PlasmaCube.pde» в действии

Скетчи от сторонних разработчиков

В этом разделе будут описаны демо-скетчи, созданные не Seeed, а сторонними разработчиками.

Куб, управляемый через iPhone

Этот демо-скетч позволяет отправлять RGB-значения кубу, исопльзуя iPhone. Для этого куб вместе с Rainbowduino нужно подключить к компьютеру, а также установить на iPhone приложение TouchOSC. Исходный код можно скачать по ссылке в конце этой статьи. Видео-демонстрацию проекта можно посмотреть тут.

Rainbow Cube Kit and RGB iPhone Software.jpg

Имитатор цвета

Этот демо-скетч переключает цвета куба в зависимости от того, что изображено на экране компьютера. Соответственно, для этого проекта куб нужно подключить к компьютеру. Исходный код можно скачать по ссылке в конце этой статьи. Видео-демонстрацию проекта можно посмотреть тут и тут.

Гирляндное подключение Rainbow Cube Kit друг к другу

Подробнее читайте тут.

Поддержка

Если у вас есть какие-то вопросы или идеи, можете озвучить их на форуме.

Версии

На данный момент выпущена только одна версия – V1.0.

Полезные ссылки

Набор Rainbow Cube Kit:

Даташиты:

APK для Android:

ПО для управления Rainbowduino:

См.также

Внешние ссылки

  1. wiki.seeed.cc - Rainbow Cube kit - RGB 4*4*4 (Rainbowduino Compatible)
  2. wiki.seeedstudio.com - Rainbow Cube