Проект tinyAVR 12. Разноцветные игральные кости

October 14, 2014 by admin Комментировать »

Если вы играете в настольные игры, то вам нужны кости. В этом проекте показано, как создать электронные кости, которые не только выдают случайное число при каждом нажатии кнопки, но и показывают его произвольным цветом. Это снова достигается при помощи RGB-светодиодов. Однако в отличие от устройства смешивания цветов или лампы для настроения (где для управления интенсивностью

Рис. 3.45. Блок-схема устройства

красной, зеленой и синей составляющих цвета применяется широтно-импульсная модуляция, обеспечивающая множество оттенков), в данном проекте возможны только три первичных (красный, зеленый и синий) и три вторичных цвета (желтый, оранжевый и пурпурный). Блок-схема устройства показана на рис. 3.45.

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

Спецификация проекта

Цель проекта — создать электронные игральные кости. Вместо точек на костях используются светодиоды. При каждом нажатии кнопки загораются светодиоды, показывающие число очков. Сами светодиоды также будут светиться разным цветом. Устройство питается от внешнего стабилизированного источника (хотя можно соединить последовательно четыре щелочные батареи по 1,5 В или четыре аккумулятора по 1,2 В.

Описание устройства

На рис. 3.46 показана принципиальная схема устройства. Стабилизатор напряжения LM3840 выдает 5 В, поэтому входное напряжение может варьироваться от 6 до 20 В. D1 — это диод Шоттки (1Ν5819) для защиты (как уже объяснялось ранее). Конденсатор С1 фильтрует выбросы и нежелательные помехи источника питания. С2 подключен к выходу LM3840. Микроконтроллер — ATtinyl3. При помощи метода Чарли выполнено мультиплексирование четырех групп RGB-светодиодов. Всего имеется 12 светодиодов, управляемых четырьмя контактами ввода/вывода.

Рис. 3.46. RGB-кости: принципиальная схема

В каждой группе по два подключенных параллельно светодиода, которые включаются одновременно. Сама кость представлена семью точками. Для этого требуется три группы и еще один светодиод, но для того, чтобы выровнять ток через светодиоды, параллельно светодиоду центральной точки подключен "холостой” светодиод. Он смещен от центра и закрыт (чтобы его свет не был виден). Кнопка S1 предназначена для изменения числа и цвета светодиодов. Нажатие кнопки S1 изменяет число, а отпускание — цвет. Резисторы R1 и R4 ограничивают ток.

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

Конструкция

Компоновку платы в программе EAGLE (и ее принципиальную схему) можно скачать по ссылке: www.avrgemus.com/tinyavrl.

Плата односторонняя (на стороне компонентов есть всего несколько перемычек). Стороны печатной платы показаны на рис. 3.47 и 3.48.

Программирование

Откомпилированный исходный код (вместе с файлом MAKEFILE) можно скачать по ссылке: www.avrgenius.coin/tinyavrl.

Тактовая частота равна 9,6 МГц. Контроллер программируется при помощи STK500 в режиме ISP. Листинг ЗЛО иллюстрирует наиболее важный фрагмент кода.

Листинг 3.10

//Процедура для нажатия кнопки void switchpressed(void)

{

unsigned char b = 1; while ( (PINB& (1«0) ) )

//ожидание нажатия кнопки

{

if(b==6) b = 1; else b = b+1;

}

_delay_ms(20); //для предотвращения дребезга statusonoff[1]=(b==4)||(b==5)||(b==6); statusonoff[2]=(b==4)||(b==5)||(b==6)||(b==3); statusonoff[3]=(b==2)||(b==6); statusonoff[4]=(b==l)||(b==3)||(b==5);

}

//процедура для отпускания кнопки void switchreleased(void)

{

unsigned char b = 1; while ( ! (PINB&(1«0) ) )

//ожидание отпускания кнопки

{

if(b==6) b = 1; else b = b+1;

_delay_ms(20); //для предотвращения дребезга coloronoff[0] = (b==2) I I (b==4) | | (b==6); coloronoff[1] = (b==3) I I (b==4) | | (b==5); coloronoff[2] = (b==l) I I (b==6) I I (b==5);

}

Функция switchpressed ждет нажатия кнопки, а функция switchreleased ждет отпускания уже нажатой кнопки. Обе функции имеют внутренний счетчик от 1 до 6. При нажатии или отпускании его значение увеличивается. В зависимости от этого значения загораются светодиоды.

Источник: Гадре, Д., Занимательные проекты на базе микроконтроллеров tinyAVR / Дхананья Гадре, Нигул Мэлхотра: Пер. с англ. — СПб.: БХВ-Петербург, 2012. — 352 с.: ил. — (Электроника)

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты