Как собрать подобие китайской гирлянды на AT mega 16 ?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
cat-dog-god0
Прорезались зубы
Сообщения: 244
Зарегистрирован: Вс янв 09, 2011 00:34:11

Как собрать подобие китайской гирлянды на AT mega 16 ?

Сообщение cat-dog-god0 »

Здравствуйте, уважаемые коты!!! :)
Начал изучать МК серии AVR с простых мигалок, получилось воссоздать многие эффекты (в том числе плавное вкл. и выкл.). Теперь пытаюсь все эти эффекты собрать воедино. Собственно тут и возникла проблема:
Как соединить множество эффектом с авто изменением скорости, программы, реверсом. а так же включить сюда же плавное вкл./выкл. и эффект, как я его называю "муравья" (т.е. скажем используется режим бегущих огней с частотой переключения 2Гц. И при загорании каждого светодиода он еще параллельно мигает с частотой ~5Гц) ??????
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Как собрать подобие китайской гирлянды на AT mega 16 ?

Сообщение Engineer_Keen »

Так никакой разницы. Изобретаете алгоритм и реализуете его в конкретном языке.
В данном случае можно просто забить таблицу констант, где будет покадрово записано какой светодиод горит, какой нет и выводить новый кадр раз в N-миллисекунд. Тем более что флеша - 16к, можно кучу кадров для каждого эффекта записать.
А еще комбинировать эффекты можно при помощи масок. Допустим для одного эффекта один набор масок, для другого - второй. При выводе данных делаем OR для обоих масок и результат выводим на светодиоды...
Реклама
cat-dog-god0
Прорезались зубы
Сообщения: 244
Зарегистрирован: Вс янв 09, 2011 00:34:11

Re: Как собрать подобие китайской гирлянды на AT mega 16 ?

Сообщение cat-dog-god0 »

Проблема в том, что не получается связать во едино все компоненты. :(
На счет кадров, я так и делаю, заношу данные в массив, а потом условиями зацикливаю.
А можно поподробней насчет масок ???
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Как собрать подобие китайской гирлянды на AT mega 16 ?

Сообщение Engineer_Keen »

Ну допустим есть кадр X1, который отвечает за мигание всех линий с частотой 5Гц (раз в 0.1с выводим то 0х00, то 0xFF).
И есть кадр X2, который с частотой 2Гц выводит бегущий огонь (0х01-0.5с-0х02-0.5с-0х04-0.5с-...).
Значит во время вывода кадра (используется самый короткий интервал из используемых, допустим 0.1с), берем эти два кадра и: Y=X1 OR X2 - выводим в порт. Результат - бегущий огонь со скоростью 2 разряда в секунду мигает с частотой 5Гц.
Тут X1 или X2 можно назвать маской :)
Реклама
Эиком - электронные компоненты и радиодетали
cat-dog-god0
Прорезались зубы
Сообщения: 244
Зарегистрирован: Вс янв 09, 2011 00:34:11

Re: Как собрать подобие китайской гирлянды на AT mega 16 ?

Сообщение cat-dog-god0 »

Engineer_Keen писал(а):...Результат - бегущий огонь со скоростью 2 разряда в секунду мигает с частотой 5Гц.
Вот елки-палки, а я его чуть ли не на двух листах исписал (в смысле, такой режим) :cry:
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Как собрать подобие китайской гирлянды на AT mega 16 ?

Сообщение Engineer_Keen »

Нормальный процесс набирания опыта... Я недавно переписал кусок кода, написанного когда только взялся за АВР, он стал в 2 раза короче и быстрее :)))
Реклама
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Как собрать подобие китайской гирлянды на AT mega 16 ?

Сообщение Мастер Ломастер »

Engineer_Keen писал(а):берем эти два кадра и: Y=X1 OR X2 - выводим в порт. Результат - бегущий огонь со скоростью 2 разряда в секунду мигает с частотой 5Гц.
результат, конечно, будет, но на мой взгляд не совсем тот, о котором речь... мигание как бы обеспечит операция AND, а не OR
битва с дураками проиграна, победители торжествуют. слава победителям!
cat-dog-god0
Прорезались зубы
Сообщения: 244
Зарегистрирован: Вс янв 09, 2011 00:34:11

Re: Как собрать подобие китайской гирлянды на AT mega 16 ?

Сообщение cat-dog-god0 »

Я по ходу дела не скоро еще разберусь. Но тут вы правы "дело мастера боится".
А не подскажите как для каждого эффекта сделать свою скорость и чтоб менялась автоматически ?
cat-dog-god0
Прорезались зубы
Сообщения: 244
Зарегистрирован: Вс янв 09, 2011 00:34:11

Re: Как собрать подобие китайской гирлянды на AT mega 16 ?

Сообщение cat-dog-god0 »

Engineer_Keen писал(а):.... с частотой 5Гц (раз в 0.1с выводим то 0х00, то 0xFF).
И есть кадр X2, который с частотой 2Гц выводит бегущий огонь (0х01-0.5с-0х02-0.5с-0х04-0.5с-...).
Значит во время вывода кадра (используется самый короткий интервал из используемых, допустим 0.1с), берем эти два кадра и: Y=X1 OR X2 - выводим в порт. Результат - бегущий огонь со скоростью 2 разряда в секунду мигает с частотой 5Гц.
Принцип понятен, но сразу таки и не додумаешься.
А еще такой вопрос как можно организовать реверс ?
cat-dog-god0
Прорезались зубы
Сообщения: 244
Зарегистрирован: Вс янв 09, 2011 00:34:11

Re: Как собрать подобие китайской гирлянды на AT mega 16 ?

Сообщение cat-dog-god0 »

Дико извиняюсь по поводу масок возник такой вопрос: как это реализовать. Т.е. я сейчас использую массив, куда занесены эффекты, вывожу один шаг этого эффекта, даю задержку. Но, как сравнить два таких эффекта с разной частотой ??? :dont_know:
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Как собрать подобие китайской гирлянды на AT mega 16 ?

Сообщение Engineer_Keen »

Мастер Ломастер писал(а):результат, конечно, будет, но на мой взгляд не совсем тот, о котором речь... мигание как бы обеспечит операция AND, а не OR
Верно, ошибочка вышла, конечно AND. А так получится мигание всех светодиодов и постоянное горение "бегущего" светодиода...
cat-dog-god0 писал(а):А еще такой вопрос как можно организовать реверс ?
Завести переменную, которая будет отвечать за направление приращения счетчика кадров. По какому-либо условию (прошедшее время, количество кадров, кнопка) делать ее либо 1, либо -1 (либо 0 - пауза).
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Как собрать подобие китайской гирлянды на AT mega 16 ?

Сообщение Engineer_Keen »

cat-dog-god0 писал(а):Но, как сравнить два таких эффекта с разной частотой ??? :dont_know:
Сравнивать нужно в том эффекте, у которого частота больше. Или использовать частоту вывода на порты, которая должна быть заведомо больше частоты любого из эффектов и в этой процедуре и делать сравнение.
cat-dog-god0
Прорезались зубы
Сообщения: 244
Зарегистрирован: Вс янв 09, 2011 00:34:11

Re: Как собрать подобие китайской гирлянды на AT mega 16 ?

Сообщение cat-dog-god0 »

Вот решил опозориться.... :oops:
Вложения
Desktop.rar
(16.56 КБ) 153 скачивания
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Как собрать подобие китайской гирлянды на AT mega 16 ?

Сообщение BOB51 »

на асме -подсказал бы чего, на С -увы :roll:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»