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

56. Программное обеспечение. Управлениеэффектами

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

launch_effect.c содержит функцию launch_effect (международный эффект).

В функции есть switch() заявление, которое вызывает соответствующие функции эффекта, основанные на числе launch_effect ().

В launch_effect.h определен EFFECTS_TOTAL. Мы устанавливаем его на одно число выше, чем самое большое количество в switch ().

Запуск эффектов один за другим является теперь простым вопросом просто перекручивания через числа и звонящий launch_effect (), как это:

While(1)

For (i=0; i < EFFECTS_TOTAL; i++)

{

launch_effect(i);

}

}

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

While (1)

{

launch_effect (rand () %EFFECTS_TOTAL);

}

%EFFECTS_TOTAL после того, как rand () содержит случайное значение между 0 и EFFECTS_TOTAL-1.

5.Программное обеспечение. Эффект 1-дождь

Вeffect.cВынайдетефункциюeffect_rain (intiterations).

Этот эффект добавляет капли дождя к верхнему слою куба, затем позволяет им падать к нижнему слою.

У большинства эффектов есть основной циклfor ()i=0 to i < iterations. effect_rain (int iterations) берет только один аргумент, который является числом повторений.

В итеративном цикле функция делает следующее:

1) Создайте случайное число между 0 и 3, будем называть его n.

2) Образуйте циклы for ()n количество раз.

3) Для каждого повторения этого цикла поместите пиксель в слой 7 (z=7) наугад x и координаты y.

4) Задержка некоторое время

5) Переместите содержание всего куба вдоль Оси Z-1 положением. Это перемещает все вниз один уровень.

Это - довольно простой эффект, но он работает!

58. Программное обеспечение. Эффект 2- самолет

Другойпростойэффект, effect_planboing (intplane, intspeed).

Этот эффект тянет самолет вдоль указанной оси, перемещая его от положения 0 до 7 на оси и снова назад. Это очень просто, но это действительно показывает глубину 3D светодиодного куба.

У этой функции нет повторяющегося цикла. Вместо этого это называют дважды для каждой оси в launch_effect ().

Вот то, что это делает:

  1. ЦиклFor () - i from 0 to 7.

2) Куб очищен и заполняется (0x00);

3) Вызовите setplane (), чтобы потянуть самолет вдоль желаемой оси в положении i. Самолет фактически не продвинут определенная ось, это оттянуто на других двух осях. Если Вы определяете AXIS_Z, самолет оттянут на оси X и Y. Просто легче думать о нем тот путь. Вместо того чтобы назвать константы PLANE_XY, PLANE_YZ и т.д.

4) Задержка некоторое время.

5) Повторите тот же самый цикл с i идущей от 7 до 0.

Очень простой, но классный эффект!

59. Программное обеспечение. Эффект 3-отправление воксели в случайный z

Этот эффект посылает воксели вверх и вниз по Оси Z.

void sendvoxels_rand_z () берет три аргумента. Повторения - количество раз, вокселей вверх или вниз. Задержка - скорость движения (более высокие средства задержки более низкая скорость). Ожидание - задержка между каждым вокселем, который посылают.

Вот как это работает:

1) Куб очищен и, заполняется (0x00);

2) Циклпо всем 64 позициям вдоль X/Y и случайно устанавливаетвоксель или в Z=0 или в Z=7.

3) Войдите в главныйповторяющийся цикл.

4) Выберите случайные координаты для X и Y между 0 и 7. Если координаты X и Y идентичны предыдущим координатам, то это повторение пропущено.

5) Проверьте воксель в этой координате X/Y в Z=0 или Z=7, и пошлите его в противоположную сторону, используя отправленный воксель z ().

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

Функция отправления вокселей_z () берет четыре аргумента. X и координаты Y. Z координата, это - предназначение и может быть 0 или 7. Задержка, которая управляет скоростью.

Вот как это работает:

  1. ЦиклFor () - i от 0 до 7.

2) Если пункт назначения7, мы устанавливаем ii в 7-1, делая ii обратной переменнойi. Очистите воксель в Z = ii+1. Спускаясь, ii+1 - предыдущий воксель.

3) Если пункт назначения 0, пусть ii, равнаi. Ясно ii-1. При движении вверх,-1 является предыдущим вокселем.

4) Установите воксель в z=ii.

5) Подождите некоторое время.

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