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

54. Программное обеспечение. Простые 3d-эффекты

Мы сделали небольшую библиотеку с простыми 3D-эффектами. Есть три причины для этого:

След памяти

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

неподписанный куб случайной работы [x] [y] [z]; (случайная работа означает - 8-битное число, неподписанное – диапазон (от 0 до 255), подписанный-128 к +127),

В пределах этого массива каждый воксель был представлен целым числом, где 0 выключено, и 1включено. Вы можете использовать все целые числа и иметь 256 различных уровней яркости. Мы попробовали это сначала, но оказалось, что у наших светодиодов с eBay были очень маленькие изменения в яркости относительно рабочего цикла. Эффект не был достаточно примечателен, что было проблемой. Мы решили использовать монохромное решения.

С монохромным кубом и трехмерным буфером, мы потратили бы впустую 7/8 используемой памяти. Самый маленький объем памяти, который Вы можете ассигновать, составляет один байт (8 бит), и Вы только нуждаетесь в 1 бите, чтобы включать и выключать. 7 бит для каждого вокселя были бы потрачены впустую. 512 * (7/8) = 448 байтампамяти потраченным впустую. Памяти на микроконтроллере недостаточно, это - не оптимальное решение.

Вместо этого мы создали буфер, который похож на это:

неподписанный куб случайной работы [z] [y];

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

Удобочитаемость кода

Урегулирование вокселей с координатами x=4, y=3, z=5 потребует следующего кода:

куб [5] [3] | = (0x01 <<4);

В draw.c мы сделали связку функций, которая берет x, y, z как аргументы и делает это удобство для Вас.

draw.c содержит еще много функций. Взгляните в draw.c и ознакомьтесь с различными функциями.

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

Как Вы можете видеть в draw.c, некоторые функции довольно большие. Строки, которые много раз кодируют внутренние функции эффектов, заняли бы много памяти программы. У нас есть только 32 КБ, для работы. Скучныйписать один и тот же код много раз.

55. Программное обеспечение. Действительное расположение куба

С этого времени родное положение светодиодного куба будет с кабелями, выходящими налево.

В этой ориентации Ось Y идет слева направо. X осей идут по всей длине. Ось Z идет от основания до вершины.

Координаты в этой инструкции всегда представляются как x, y, z.

Положение 0,0,0 - нижний левый передний угол. Положение 7,7,7 - верхний правый дальний угол.

Почему мы использовали Ось Y для левого/правильного и X для спины/фронта? Разве это не должно быть наоборот? Да, мы думаем так также. Мы проектировали светодиодный куб, который будет рассматриваться с "фронта" с кабелями, выходящими со спины. Это было довольно непрактично, имея светодиодный куб на столе, было более практично, чтобы иметь кабели, выходящие с одной стороны и имеющие куб и контроллера рядом. Все функции анимаций разработаны, чтобы быть рассмотренными от этой ориентации.

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