Rainbow Cube — куб с RGB диодами

в 19:37, , рубрики: arduino, diy или сделай сам, диоды, КУБ, Программинг микроконтроллеров, метки: , ,

Rainbow Cube — это куб с RGB диодами (4x4x4), который можно программировать через Mac/PC, основан на Atmega 328. Для программирования используется Arduino IDE.
Rainbow Cube — куб с RGB диодами

Заказ и доставка

Для того, чтобы сэкономить время на сборке самого куба, я заказал Rainbow Cube Kit (Assembled) с seeedstudio.com, через Hongkong Post.
Причём seeedstudio предоставляет бесплатную отправку для товаров стоимостью более $50, но без веселья не обошлось — трекинг для Украины у Hongkong Post оказался только до момента вылета за пределы Гонконга. Так что после вылета необходимо трекать посылку через Укрпочту.
Процесс доставки происходил примерно так: 25 января сделал заказ, 15 февраля посылка уже была в Киеве, 3 февраля посылка вылетела из Гонконга, 20 февраля забрал посылку в Донецке, на почте.

А что внутри?

Почтовая коробка имеет такие размеры: 19x28x17 см^3.
Фирменная коробка от Seeedstudio, в которой находится куб: 18x12,5x12,5 см^3.
Rainbow Cube — куб с RGB диодами
В комплекте имеется:

  • Собранный Rainbow Cube в прозрачной пластиковой коробочке.
  • Сетевой адаптер (позволяет включать Rainbow Cube от сети; вилка американского стиля)
  • USB кабель

Rainbow Cube — куб с RGB диодами

Что нужно для работы?

Для начала нам необходимо скачать Arduino IDE и библиотеку для работы с Rainbowduino. Файлы из архива с библиотекой нужно распаковать в папку libraries, которая находится в папке с Arduino IDE. После этого нужно подключить куб через USB и установить для него драйвер.

Программирование куба

Стандартные функции Rainbowduino для куба:

  • Rb.init(void) — инициализация драйвера Rainbowduino, необходимо использовать в функции setup()
  • Rb.setPixelZXY(unsigned char z, unsigned char x, unsigned char y, unsigned char colorR, unsigned char colorG, unsigned char colorB) — устанавливаем цвет диода (Z, X, Y), указывая для каждого цвета 8-битное число
  • Rb.setPixelZXY(unsigned char z, unsigned char x, unsigned char y, unit32_t colorRGB) — устанавливаем цвет диода, указывая цвет с помощью 24-битного RGB-кода
  • Rb.blankDisplay(void) — устанавливаем для всех диодов пустой цвет

Отмечу, что для «отключения» одного диода нужно передать в качестве цвета 0x00 (NULL).

Рассмотрим простой пример кода с комментариями к каждой строчке:

/*
 Rainbowduino v3.0 Library examples:  Cube2

 Sets pixels on 3D plane (4x4x4 cube)
*/

#include <Rainbowduino.h> // Подключаем библиотеку для работы с Rainbowduino

void setup() // Данная функция выполняется только при включении Rainbow Cube
{
	Rb.init(); // Инициализируем драйвер Rainbowduino
}

/* Определяем переменные для удобства работы.
 * Z - переменная, в которой будет содержаться координата точки OZ
 * X - переменная, в которой будет содержаться координата точки OX
 * Y - переменная, в которой будет содержаться координата точки OY
*/
unsigned int z,x,y; 

void loop() // Данная функция выполняется в бесконечном цикле после setup()
{
	for(x=0; x<4; x++) // Создаём цикл для перемещения по оси OX
	{
		for(y=0; y<4; y++) // Создаём цикл для перемещения по оси OY
		{
		// Окрашиваем диод с координатами (0, X, Y) в зелёный цвет
		Rb.setPixelZXY(0, x, y, 0x00FF00); // используем 24-битный RGB-код
		}
	}

	for(x=0; x<4; x++) // Создаём цикл, который перемещается по оси OX
	{
		for(y=0; y<4; y++) // Создаём цикл, который перемещается по оси OX
		{
		// Окрашиваем диод с координатами (3, X, Y) в синий цвет
		Rb.setPixelZXY(3, x, y, 0x0000FF); // используем 24-битный RGB-код
		}
	}
}

После прошивки куб светится таким образом:
Rainbow Cube — куб с RGB диодами

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

P.S: Камера не особо хотела передавать всю красоту смены цвета.

На этом всё! Фантазируйте, экспериментируйте, пишите, друзья! И всё у вас получится, ведь всё гениальное — просто.

Автор: ZiGR

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js