"Волшебная коробка"

Функционал устройства:
- 7- программ миганния;
- Переключенние между программами происходить по кнопке;
- Переключенние между программами по таймеру, каждых 30с;
- Отключение устройства по кнопке;
- автоматичиское выключение при 5минутах неактивности.
Схема устройства очень простая — микроконтроллера ATmega8, красные светодиды, кнопки и батарейки питания (3 пальчика). Плату сделал двухслойной (не хотелось использовать перемычки).Разводил в Altium Designer, избыточно для такой прсотой платы использовать такую программу, но так как я с ней постоянно работаю — мне в ней удобно. Altium проект вконце статьи в архиве. Чтобы распечатать чертеж для ЛУТ сначала необходимо сгенерировать гербер, как сделать уже описано тут.
Вот так выглядит плата устройства в Altium Designer:

Визуализация платы в Altium Designer:

Плату поместил в сувенирную коробку:

Для программирования МК на плате есть разъем. Конечно он немного портыть выд устройства, но совсем не хотелось мучаться с проводами для прошивки. Я программировал через AVRISP mkII но можно использовать той что есть в у вас в наличии.
Прошивку писал в AVR Studio на язике С, не особо оптиммизировал. Частота работы МК 8MHz В программу очень легко вносить новые эффекты мигания. Кнопкой S2 включаеться устройство, S1 — переключючение программ мигания по кругу, после МК переходить в сон, и чтобы включить нужно нажать S2 (кнопка подключена к внешнему прерыванию). Если кнопка S1 не нажимаеться, через 30 секунд произойдет переключение на следующую программу мигания. Если нет активности пользователся, через 5хв устройство отключиться.
Программа огранизована в виде тасков. В прерывании таймера устанавливаеться флаг события, в главном идет обработка события и сбрасиваеться флаг:
volatile unsigned char BlinkMode = 0; // какой ефект должен работать
volatile unsigned char BlinkSpeed = 0; //скорость переключения
volatile unsigned char TaskFlag = 0; // переменная флагов для задачь
ISR(TIMER2_COMP_vect) // 1mS
{
if (++count2 == BlinkSpeed)
{
TaskFlag|= (1<<6); //set flag
count2 = 0;
}
}
while(1)
{
if (TaskFlag & (1<<6))
{
BlinkLedTask();
TaskFlag&=~(1<<6); // clear flag
}
}
Так происходить переключение программ мигания:
void BlinkLedTask(void)
{
switch (BlinkMode)
{
case 0: Blink1(20); break;
case 1: Blink2(50); break;
case 2: Blink3(200); break;
case 3: Blink4(255); break;
case 4: Blink5(150); break;
case 5: Blink6(90); break;
case 6: Blink7(250); break;
case 7: Sleep(); break;
}
}
Одна с функций мигания:
iBlinkSpeed
— параметр функции — скорость мигания.EnableAll();
устанавливает лог «1» на аноды светодиодов.PWM = 10;
минимальная яркость мигания светодиодов PWM = 250;
максимальная яркость мигания светодиодов
void Blink7(unsigned char iBlinkSpeed)
{
static unsigned char num = 0;
BlinkSpeed = iBlinkSpeed;
EnableAll();
if (num == 0)
{
PWM = 10;
num = 1;
}
else
{
PWM = 250;
num = 0;
}
}
Для тех кто выдержал и дочитал:
Как работает устройство-видео
Файлы к статье:
we.easyelectronics.ru/attachments/get/1091
we.easyelectronics.ru/attachments/get/1092
Спасибо. Жду конструктивной критики и замечаний!)
- +4
- 08 сентября 2012, 00:05
- Nemo
- 2
Файлы в топике:
ATmega8.zip, Plata.ZIP
А по мне — так современнее :) Впрочем, девушка віскажет свое мнение. Оно будет единственно правильнім.
В видео немного насмешил режим, когда 2 половинки сердца по-очереди зажигаются. Похоже на уши :)
В видео немного насмешил режим, когда 2 половинки сердца по-очереди зажигаются. Похоже на уши :)
А зачем «современнее» запихивать в коробочку под ретро?чтобы придать оригинальности. А как Вы бы запихнули плату? Изделие подарок, согласен заводское исполнение выглядить намного лучше.
Да и красота исполнения платы сомнительная.а чем исполнение не понравилось?
А как Вы бы запихнули плату?Я бы ее чем-нибудь накрыл. Проще всего — куском красной тонкой ткани. Для мягкости и некоторой защиты платы можно под нее положить кусок тонкого пенополиэтилена, правда, тогда нужны светодиоды хорошей яркости.
Не говоря уже о том, что я бы избавился от кнопок. S1 прекрасно заменяется на датчик тряски (пружинка в трубочке), S2 — на обычный геркон.
а чем исполнение не понравилось?А что в нем красивого? Я бы постыдился такую плату за декоративное изделие выдавать.
Земляк привет.
Мой сосед делал похожее для своей девушки, точнее Мы делали ))
Там било около 150 сверх ярких светодиодов и оно кроме всяких ефектов еще и текст в виде бегущей строки выводило. Корпус тоже сами делали, из красного акрила, что было очень не просто. Клеили все токсичным дихлоретаном.
Мой сосед делал похожее для своей девушки, точнее Мы делали ))
Там било около 150 сверх ярких светодиодов и оно кроме всяких ефектов еще и текст в виде бегущей строки выводило. Корпус тоже сами делали, из красного акрила, что было очень не просто. Клеили все токсичным дихлоретаном.
Приятно видеть земляков!)Интересно было бы посмотреть на Ваше творение. А как управляли 150-ми светодиодами?
емнип он (или очень похожий по описанию) был тут или на хабре. поищите, весьма интересно.
- prostoRoman
- 08 сентября 2012, 11:35
- ↑
- ↓
Похожий был, но не он (в этом легко убедиться, глянув в послужной список Leon11t — там такой статьи нету). Да и похожий был исполнен не из оргстекла, а в виде пришитой к тряпичному сердечку платы с матрицей светодиодов в форме сердца.
Мигающие по захардкоженному алгоритмы светодиодики — это скучно, оценить и отправить в шкаф. Лайф/тетрис/змейка — куда прикольнее, тогда коробочка может радовать очень долго)
«может радовать очень долго»
Ну, брат, эдак и до женитьбы недалеко!
А если серьезно, то такая вещь, которую нам показал уважаемый автор, вполне катит как память на долгие годы. В нашей семье есть музыкальная шкатулка, привезенная из Каира в далекие 60-е. Она сломалась очень давно. И все равно была ценным сувениром, с которым связано много воспоминаний. Настолько ценным, что мой сын (родившийся через много лет после египетского периода нашей жизни) выбрал именно эту поломанную шкатулку, как то, что он захотел оставить себе от бабушки. И племянница, представь, претендовала на нее же! Ну, конфликта не было, но вот факт показателен.
И, кстати, перед отправкой шкатулки к сыну мы таки сдали ее в ремонт. Да, теперь она играет известное произведение. Но не слишком-то часто (при мне — никогда) ее для этого и открывают. Это память, а не развлекаловка — ну куда ей до современных игрушек!
Так и в нашем случае. Никакие ухищрения поразить богатством функционала не продержат актуальность подарка дольше, чем те чувства, которые испытывают люди друг к другу и о которых всегда будет напоминать эта простая мигалка.
К автору: «простая мигалка» — это в полемическом задоре. На самом деле она у тебя вполне сложная :)
Ну, брат, эдак и до женитьбы недалеко!
А если серьезно, то такая вещь, которую нам показал уважаемый автор, вполне катит как память на долгие годы. В нашей семье есть музыкальная шкатулка, привезенная из Каира в далекие 60-е. Она сломалась очень давно. И все равно была ценным сувениром, с которым связано много воспоминаний. Настолько ценным, что мой сын (родившийся через много лет после египетского периода нашей жизни) выбрал именно эту поломанную шкатулку, как то, что он захотел оставить себе от бабушки. И племянница, представь, претендовала на нее же! Ну, конфликта не было, но вот факт показателен.
И, кстати, перед отправкой шкатулки к сыну мы таки сдали ее в ремонт. Да, теперь она играет известное произведение. Но не слишком-то часто (при мне — никогда) ее для этого и открывают. Это память, а не развлекаловка — ну куда ей до современных игрушек!
Так и в нашем случае. Никакие ухищрения поразить богатством функционала не продержат актуальность подарка дольше, чем те чувства, которые испытывают люди друг к другу и о которых всегда будет напоминать эта простая мигалка.
К автору: «простая мигалка» — это в полемическом задоре. На самом деле она у тебя вполне сложная :)
Комментарии (31)
RSS свернуть / развернуть