Рис 3. Схема переключения строк 2.3. Написание и отладка программы
Программу эффектов светодиодного куба 8х8х8 мы написали на языке программирования С. Использовали эффекты из проверенного рабочего светодиодного куба. Так же написали новые световые эффекты.
Все функции эффектов на микроконтроллере для создания эффектов используют операторы if().
#asm("sei")
switch (mode1) {
case 0: // test
switch (mode2) {
case 0:
clear_cube();// очистить куб
mode2=1;
break;
case 1: // Down-Up // снизу-вверх
if (k == 0) clear_cube();
if (k>0) for (j=0;j<8;j++){ cube_buf1[k-1][j] = 0b00000000; }
k++;
for (j=0;j<8;j++){ cube_buf1[k-1][j] = 0b11111111; }
if (k == 8){
k = 1;
mode2 = 2;
}
break;
case 2: // Up-Down // сверху-вниз
if (k>0) for (j=0;j<8;j++){ cube_buf1[7-k+1][j] = 0b00000000; }
k++;
for (j=0;j<8;j++){ cube_buf1[7-k+1][j] = 0b11111111; }
if (k == 8){
k = 0;
mode2 = 3;
}
break;
Если необходим легкий способ управления эффектами. То необходимо создать функцию запуска эффекта.
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.
Заключение
В процессе разработки был изучен теоретический материал, разработана схема светодиодного куба, составлен алгоритм разработки куба, разработано программное обеспечение микроконтроллера, произведен расчет элементов электрической схемы. Так же были разработаны собствнные световые эффекты.
В процессе выполнения курсового проекта был разработан светодиодный куб, состоящий из 512 светодиодов, микроконтроллера ATmega328 на основе Arduino Duemilanove, схемы управления для создания световых эффектов.
Итогом курсового проекта является готовая модель светодиодного куба с элементами графических 3D эффектов.
Список используемой литературы
http://www.instructables.com: Светодиодный 3D куб
http://www.atmel.com: Микроконтроллер ATmega328
http://arduino.ru: Платформа Arduino