Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ru_Led_Cube_6.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
144.43 Кб
Скачать

67. Программное обеспечение pc: Эффект 2, sidewaves

Это - в основном та же функция как функция ряби.

Единственное отличие состоит в координатах точки используемых для расчёта расстояния до каждой координаты x/y. Мы называем этуточку «начало», так как волна начинается в этой точке.

Начало координат вычисляется следующим образом:

x = sin, y =cos

Результат состоит в том, чтокоординатыx и y перемещаются по кругу, приводя к созданию волны.

68. Программное обеспечение pc: Эффект 3, фейерверк

Этот эффект делать очень интересно.

Мы придумали теоретическую модель того, как работает фейерверк:

1) Ракеты взлетели в случайное положение, origin_x, origin_y, origin_z.

2) Ракета взрывается и выбрасывает горящие частицы в случайных направлениях на случайной скорости.

3)Частицы замедляются сопротивлением воздуха и притягиваются к земле под действием силы тяжести.

С помощью этой модели, мы создали эффект фейерверка с довольно хорошим результатом. Как он работает:

1) Выбрано случайное положение координат (в пределах определенных пределах, x и y между 2 и 5, чтобы держать фейерверк более или менее в центре куба. z между 5 и 6; Фейерверк, взрывающийся около земли, может быть опасным!)

2) Ракета, в этом случае это voxel перемещается вверхпо оси Z в координаты х и y, пока это не достигнет origin_z.

3) Создаётся массив частиц n. У каждой частицы естькоординаты x, y и z, а так же скорость для каждой оси:dx, dy и dz.

4) Цикл For()проходит через 25 шагов анимации частиц:

5) slowrate вычислена, это - сопротивление воздуха. slowrate вычислена, используя Tan(), который вернётэкспоненциально растущее число, ускоряя частицы.

6) Переменная силы тяжести вычислена. Также используя Tan(). Действие силы тяжести также экспоненциально. Это, вероятно, не математически правильный способ вычислить действиесилы тяжести на объект, но это выглядит хорошо.

7) Для каждой частицы координаты x, y и z увеличиваются на их скоростиdx, dy и dz, делённые на slowrate. Это заставит частицы двигаться медленнее.

8) Координата z уменьшена переменной силы тяжести.

9) Частица рисуется на кубе.

10) Задержка некоторое время, затем повторение анимации.

69. Программное обеспечение pc: Эффект 4, Игра в жизнь 3d

Игра в жизнь, также известный просто как жизнь, клеточный автомат, разработанный британским математиком Джоном Хортоном Конвеем.

Чтобы заставить его работать в 3D, пришлось немного изменить правила:

  • Мертвая клетка становится живой, если она имеет ровно 4соседа

  • Живая клетка с 4соседями- живёт

  • Живая клетка с 3 илименьше соседями - умирает

  • Живая клетка с 5 или большесоседями - умирает Программа начинается с размещения 10 случайных вокселей в одном углу куба.

70. Управляйте кубом на Arduino

Мы получили много вопросов от людей, можно ли использовать Arduino, чтобы управлять кубом.

Требования к количеству портов для светодиодного куба 8x8x8:

Выбранный слой: 8 (дешифратор 3х8)

Шина данных для триггеров: 8

Адресная шина для триггеров: 3

Разрешающий работу выход для триггеров: 1

Общее количество: 20

У Arduino есть 13 контактов GPIO и 8 аналоговых выходов, которые могут также использоваться в качестве GPIO. В общей сложности это даёт 21 порт IO, для управления светодиодным кубом!

Мы подключили куб кArduino и перенесли часть программного обеспечения.

Так как массив мультиплексора и плата AVR разделены ленточным кабелем, подключить линии IO к Arduino является простым делом.

Мы соединили куб так:

Шина данных:

Цифровые контакты 0-7. Что соответствует PORT_D ATmega328 на Arduino.

Адресная шина: Цифровые контакты 8-10. Что соответствует PORT_B бит 0-2. При этом мы должны использовать прямой доступ к портам. Arduinos digitalWrite не будет работать, потому что Вы не можете подключить несколько контактов одновременно.

Подключение выхода: Цифровой контакт 11.

Массив транзисторов: Аналоговые контакты 0-5 и цифровые контакты 12 и 13.

Мы должны были немного выйти за рамки платформы Arduino. Цель Arduino состоит в том, чтобы использовать digitalWrite () для доступа к портам IO, чтобы сделать код более портативным и некоторые другие причины. Мы должны были обойти это и получить доступ к портам непосредственно. В дополнение к этому мы должны были использовать один из таймеров для прерывания.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]