Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Управление светодиодными матрицами.


Управление светодиодными матрицами.

Сообщений 1 страница 4 из 4

1

Доброго дня. Нужна помощь - застрял блин. Туплю.

Собствено сабж представляет светоиодные матрицы 8х8 красного свечения.
так как матриц можт быть много(n-штук) они подключены через сдвиговые регистры (Reset, Data, Clock - на контроллер).
После сдвиговых регистров стоят ключи серии ULN так как собственно сами сдвиговые регистры не сопособны продавиь ток в 100 ма на 1 светик в ДИНМИКЕ (в статике всего 20ма). К ULN подключены катоды.
Аноды матриц соеденены соотвтественно построчно и заведены на 8 ключей верхнего плеча в виде полевиков IRLML6402TR.

контролер тини2313.
Собственно електрически все прекрасно работает. Ток правда до рабочих 100м не подымал так-как эксперементирую и можно при остановленной или завсшей програме пожечь светики некоторых матриц. когда отработаю будет вачдог на страже - пока естественно нету.

1)Загрузка даных в сдвиговые регистры - ОК
2)Перещелкивание анодов по кольцу - ОК
3)Тестовое изображение (операторы Data-Read-Restore) - ОК

Подпограмки для 1 и 2 написанны  и работают по прерывнию от таймера. - ОК

Проблема у меня  с дальнейшей логикой работы. Туплю блин.....
Чего хотелось бы достичь...Наприер светодиодное информационное табло, управлене от UART или через радиомодуль. Тоесть хотелось бы уневерсальности.
Также очень обязательно наличии спец ефектов при выводе на матрицы (сдвиг влево или право - бегущая строка, сдвиг по кольцу  верх или низ, мигание всего текста или некоторых букв и т.д.)
Понятно что нужен знакогенератор. Я пока думал  о "видио ОЗУ" в виде массива - однако баском не работает с двумерными массивами.
Выход мне подсказал товарищ - одномерный массив и переборка его с шагом 8.
Мож есть какие уже отработанные варианты - не хтелось бы изобретать  велосипед. Как вообще стоит решать такую задачку....????

0

2

На Тини2313 особо не разгонишься...
Нужно для начала определится, где будут создаваться эффекты. Если в контроллере, то нужно что-то с большей памятью, начиная хотя бы с Меги8. Если Эффекты будут строиться в контроллере, то тиньки принимать данные по УАРТу и выводить на матрицы вполне хватит. В первом случае - автономность работы но ограничение по эффектам, во втором - неограниченное количество эффектов, но привязка к компьютеру. Лучший вариант - симбиоз первого и второго, с наибольшими возможностями. Но и с наиболее трудоёмкой прцедурой написания и обработки кода. Я свои игрушки в большей степени на ПК пишу, а контроллер только принимает и отображает данные.

0

3

radan написал(а):

На Тини2313 особо не разгонишься...

В принципе не вопрс перейтина мегу8....
просто пока есть макетка под 2313. ну и охота по максимому заюзать кристал.
Пока хватает. Прижмет ограничением перейду - не вопрос.

radan написал(а):

Нужно для начала определится, где будут создаваться эффекты. Если в контроллере, то нужно что-то с большей памятью,

В контролере - ком туо должон отправлять строку по ЮАРТу. Для передачи ефектов моно применить форматирование строки, или спец символы.

radan написал(а):

В первом случае - автономность работы

Это обезательно! Вполне вероятно что упарвление бует пожже от другого контролера+PCклавиатура.

radan написал(а):

Я свои игрушки в большей степени на ПК пишу, а контроллер только принимает и отображает данные.

Для начала хотя-бы так.

Просто застрял не пойму куды двиггаться далее. Вроди и инфу отправить на матрицы могу без проблем, а вот как инфу организовать внутри МК? Как ее подготовить к выдаче и правильно выдать?...туплю.
Пните плиз в нужном направлении.

0

4

Ваш экран - это математическая матрица с размерностью X*Y. Для получения всевозможных эффектов к ней нужно применить преобразования - сдвиг влево, вправо, вверх, вниз, инверсия. Наложение маски - например RND, замена частично символов и т.д. Смотрите в сторону работы с матрицами, но организуйте их в одномерные массивы.
Ниже пример работы с матрицей 8х8 на VBNET. Она сдвигает каждую строчку, начиная со второй, на одну вниз и заполняет первую в случайном порядке. Эффект, как в фильме "Матрица", только конечно, попроще.

Код:
            For col = 7 To 1 Step -1
                For row = 0 To 7
                    st_led = (8 * col + row)
                    If buf_USB(st_led - 8) = 1 Then
                        buf_USB(st_led) = 1
                    Else
                         buf_USB(st_led) = 0
                    End If
                Next
            Next
            col = 0
            For row = 0 To 7
                st_led = (8 * col + row)
                random = Int(Rnd() * 10
                If random = 1 Then
                    buf_USB(st_led) = 1
                Else
                    buf_USB(st_led) = 0
                End If
            Next

Принцип я думаю понятен: здесь buf_USB - одномерный массив на 64 элемента

0

Похожие темы


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Управление светодиодными матрицами.