Например TDA7294

Форум РадиоКот • Просмотр темы - Семисегментный LED-индикатор. Эффекты анимации
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Ср янв 27, 2021 11:24:18

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 184 ]  1, , , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Пт авг 21, 2020 20:00:54 
Открыл глаза
Аватар пользователя

Зарегистрирован: Чт июл 23, 2020 20:59:01
Сообщений: 40
Откуда: СевКавТВ
Рейтинг сообщения: 0
Хотелось бы поэкспериментировать с этим индикатором в плане эффектов. Для начала решил написать вот такого вида, бегущий прочерк по часовой стрелке. Для отображения на индикаторе взял код (прерывание по Таймеру0) один из доступных в сети.
Код:
 - - - - -
|          |
 - - - - -

В общем всё взлетело, только код получился, как мне кажется очень кривой и громоздкий. И ещё появился один косяк. Яркость индикатора упала в два раза от оригинала ( таймера с которого я взял код обработки прерывания для динамической индикации). И не придумал, как можно обойтись одни таймером. И можно ли вообще одним только? Выслушаю все замечания и рекомендации.



Последний раз редактировалось ChipCard Сб авг 22, 2020 18:17:40, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Пт авг 21, 2020 23:44:59 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 798
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2915
Рейтинг сообщения: 1
В массив "кадров" оформить было бы удобнее. И даже, возможно, экономичнее. Если подумать, то часть эффектов можно описать формулами.
Одним таймером обойтись можно, да и ненужно больше-то.
Например, так:
массив размерностью 4 - там храним значение каждого разряда. назовем Digs[]
i = 0
В бесконечном цикле main:
Port = Digs[i]
if i >3 i= 0

ну а по таймеру меняем содержимое Digs[]
Это не единственный вариант, да и не самый лучший - может плавать яркость, так как будет отвлечение на прерывания то там то сям.
Можно наоборот - переключение свечения разрядов переложить на таймер, а смену кадров в main, по некоему флагу счетчику, который накапливается в том таймере.

Вообще, если "кадры" загнать в массивы, то таймера необязательны, даже один. Можно бесконечно прокручивать в майне.

Яркость падает - индикация динамическая же, разряд (или сегменты - смотря на что опирается динамика) светятся лишь некий процент времени. В некоторых пределах лечится увеличением тока.


Вернуться наверх
 
Друзья! Скоро Новый Год! Китайский! Но мы работаем и в праздники тоже!

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 09:19:51 
Открыл глаза
Аватар пользователя

Зарегистрирован: Чт июл 23, 2020 20:59:01
Сообщений: 40
Откуда: СевКавТВ
Рейтинг сообщения: 0
Я изначально размышлял про массив, но что-то мысль не пошла :). Надо попробовать по вашему рецепту. А про яркость, я пробовал изменить частоту и добавил запрет всех прерываний, чтоб контроллер не отвлекался при выполнении кода вывода на индикатор. Не помогло. Ток увеличивать не хотелось бы, решить программно.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Шестое юбилейное мероприятие в процессе
Не в сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 10:12:10 
Друг Кота
Аватар пользователя

Карма: 87
Рейтинг сообщений: 1023
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 11400
Откуда: ДОНЕЦК (ЮГО-ВОСТОК ua/DPR)
Рейтинг сообщения: 1
Анимацию закладываем в параметры динамической индикации.
Собственно там, при хорошо проработанном алгоритме, никаких потерь яркости не должно быть - только другая картинка на определенное время замещает текущую.
Как вариант - попеременный вывод из двух массивов - основная видеопамять и буфер предобработки данных.
Один выводится, другой в это время обрабатывается.
Обработка дисплея делается автономной "прозрачной" - вывод очередного шага развертки и обработка счетчиков шагов по прерыванию (от чего удобнее - или по таймеру /ассемблер-Си/ или через спецприем для адуринки).
Остальное время - работает основная программа с буферами предподготовки и по спецфлагам содержимое тех буферов пересылается в основную видеопамять дисплея в момент "темного периода" (перед началом очередного цикла развертки).
8)


Вернуться наверх
 
Вебинар "Новый BlueNRG-LP с Bluetooth 5.2 и Long Range — волшебная палочка разработчика IoT" (04/02/2021)

Приглашаем 4 февраля на бесплатный вебинар о BlueNRG-LP - новой системе-на-кристалле (SoC) STMicroelectronics. На вебинаре будут детально рассмотрены функциональные блоки, особенности подключения, аппаратные и программные средства для разработки, настройка сценариев с помощью BlueNRG-GUI, практические примеры работы с микросхемой, а также примеры применения BlueNRG-LP в устройствах интернета вещей.

Зарегистрироваться>>
В сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 11:41:19 
Друг Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 1710
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 5127
Откуда: Сердце Пармы
Рейтинг сообщения: 3
Медали: 1
Получил миской по аватаре (1)
а зачем темный период? использовал буфер и работай с ним, а драйвер экрана будет брать из него по потребности

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)


Вернуться наверх
 
Когда имеет смысл менять кремниевые транзисторы на карбид-кремниевые?

В связи с ростом привлекательности карбид-кремниевой технологии для более низковольтных приложений разработчики должны хорошо понимать, в каких случаях классические кремниевые MOSFET следует заменять транзисторами, изготавливаемыми по новой технологии.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 11:57:04 
Открыл глаза
Аватар пользователя

Зарегистрирован: Чт июл 23, 2020 20:59:01
Сообщений: 40
Откуда: СевКавТВ
Рейтинг сообщения: 0
а зачем темный период?


Что конкретно имеется в виду?


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 12:54:04 
Друг Кота
Аватар пользователя

Карма: 87
Рейтинг сообщений: 1023
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 11400
Откуда: ДОНЕЦК (ЮГО-ВОСТОК ua/DPR)
Рейтинг сообщения: 1
Специальный участок в конце развертки для служебных операций с погашенным экраном.
В принципе не всегда обязателен в явном виде - часто используется интервал индикации знакоместа.
Просто с тем "темным знакоместом" начинающему проще. Да и дополнительные операции также время занимают (кнопы или еще чего к дисплею привязанного - перезагрузка счетчиков, указателей, проверка флагов и прочая рутина)...
Я в основном на ассемблере с динамикой возился - там интервалы обработки удобнее просчитываются.
Под Си - или ассемблерные вставки или следим за тем, во что наши задумки компилятор превращает - лучше чтоб запас времени был.
8)


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 13:19:44 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 798
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2915
Рейтинг сообщения: 0
Мне кажется, в данном случае это излишне. Всё прекрасно успеет обработаться пока светится разряд.


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 13:28:30 
Друг Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 1710
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 5127
Откуда: Сердце Пармы
Рейтинг сообщения: 5
Медали: 1
Получил миской по аватаре (1)
зачем мучаться?
настраиваешь таймер, и ловишь его переполнения
в них
1- гасишь разряд
2- обновляешь сегменты из массива элементов дисплея
3- зажигаешь разряд.
все операции занимают одинаковое количество команд (из цикла в цикл) => экран не мерцает
а если вынести гашение разряда в прерывание по совпадению этого же таймера, то можно и яркость регулировать...
а пересчитывать массив и опрашивать кнопки можно, например, после вывода 1го разряда...

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 14:00:32 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 798
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2915
Рейтинг сообщения: 0
Верно. Поправлю только, что пересчитывать и опрашивать можно всё остальное время.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 16:01:42 
Открыл глаза
Аватар пользователя

Зарегистрирован: Чт июл 23, 2020 20:59:01
Сообщений: 40
Откуда: СевКавТВ
Рейтинг сообщения: 0
зачем мучаться?
1- гасишь разряд
2- обновляешь сегменты из массива элементов дисплея
3- зажигаешь разряд.

А обязательно именно так поступать, ведь при обычных частотах обновления экрана всё равно не будет заметно появление новых значений? В том коде, который я использую таже не так, верно?

Код:
 if (bc547 == 2) {RAZRIAD = 0b00000100; CHISLO = Razrad2;} //включаем 2-й разряд, остальные выключаем

Меняется номер разряда и сразу выводится новое значение. Я спрашиваю из соображения, как делать правильно и при этом не наращивать объём кода.

Добавлено after 1 minute 19 seconds:
Специальный участок в конце развертки для служебных операций с погашенным экраном.

Так в моём случае его же и нет. Разве не так?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 16:34:47 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 798
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2915
Рейтинг сообщения: 1
если не гасить перед обновлением - риск появления ложной засветки


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 17:13:46 
Друг Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 1710
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 5127
Откуда: Сердце Пармы
Рейтинг сообщения: 2
Медали: 1
Получил миской по аватаре (1)
конкретно в твоем случае ничего страшного не произойдёт, разве что в протеусе дисплей может завыкобениваться и начнёт всякую ерунду показывать.
но:
если тактовая у мк небольшая или частота переключения разрядов высокая или светодиоды в сегментах яркие или дисплей крупный, а в усилителях стоят медленные транзисторы, то эффект паразитной засветки соседних тазрядов может быть весьма ощутимым.
или если пришлось разместить сегменты на разные порты, то ты их не сможешь переключить за один такт => если их переключать при включенном разряде, то у них будет различаться время свечения и, значит, и яркость...
А посмотри на свой дисплей в темноте - может и ты паразитную засветку заметишь (особенно заметно на потушенном разряде)

Добавлено after 14 minutes:
BlackKilkennyCat, да, можно считать и опрашивать всё остальное время, но, если нужно связаться с часовой микросхемой или с датчиком температуры - то лучше не тянуть, т.к. только сразу после переключения разряда есть гарантированный вагон времени для связи, при которой ни ей никто не помешает, ни она никому...
только мы уже совсем отвлеклись от темы топика...

Добавлено after 7 minutes 57 seconds:
к теме - делал меню со спецэффектами перехода -
разместил всё меню в 2мерный массив (все подпункты одного пункта шли какбы одной строкой) текущее положение и цель перемещения задаввлась координатами в этом массиве (задавались координаты первого символа, остальные брались последующие от него в строке)
также для смягчения эффекта перехода был предусмотрен анимированный сдвиг по вертикали и/или горизонтали.

Добавлено after 2 minutes 36 seconds:
благодаря этоау меню легко ложится в топографичевкую память и становится удобным в обращении

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 17:54:28 
Открыл глаза
Аватар пользователя

Зарегистрирован: Чт июл 23, 2020 20:59:01
Сообщений: 40
Откуда: СевКавТВ
Рейтинг сообщения: 0
А посмотри на свой дисплей в темноте - может и ты паразитную засветку заметишь (особенно заметно на потушенном разряде)


Так и есть ))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 17:55:54 
Держит паяльник хвостом

Карма: 4
Рейтинг сообщений: 111
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 960
Рейтинг сообщения: 0
В качестве примера.

seven_segm_led_ind.h


seven_segm_led_ind.с


Этот код был написан для проекта, в котором донором послужил прибор Термодат.
Вложение:
termodat.jpg [8.08 KiB]
Скачиваний: 71


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 18:19:43 
Открыл глаза
Аватар пользователя

Зарегистрирован: Чт июл 23, 2020 20:59:01
Сообщений: 40
Откуда: СевКавТВ
Рейтинг сообщения: 0
Буду разбираться...


ЗЫ к сожалению, плюсы на сегодня закончились )


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 19:59:50 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 798
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2915
Рейтинг сообщения: 4
Ivanoff-iv, ну, связываться-то со всякой периферией - это значительно быстрее, чем переключения индикаторов. Индикатор - десятки герц, тормознутая и2ц, например, сотни килогерц... так что, успеваем )) опять же, если еще и периферия хардварная, то вообще ещё и в слип уйти можно успеть :)

Добавлено after 1 hour 23 minutes 5 seconds:
Demiurg, к сожалению, это может быть лишь хорошим примером "Как нельзя программировать"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 20:24:03 
Держит паяльник хвостом

Карма: 4
Рейтинг сообщений: 111
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 960
Рейтинг сообщения: 0
Мою работу оценивают мои клиенты.
Ваше замечание - Это ваше личное мнение. Укажите причины и выкладывайте свой пример. Гляну... Что касается моего примера, динамическая индикация. Работает, читайте внимательно, в основном цикле.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 20:45:44 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 798
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2915
Рейтинг сообщения: 0
Это работа для клиентов?! Час от часу не легче...
Причины указывать - да весь код сплошная причина. Невообразимое количество бесполезных дефайнов и практически бессмысленных функций.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Семисегментный LED-индикатор. Эффекты анимации
СообщениеДобавлено: Сб авг 22, 2020 20:49:46 
Держит паяльник хвостом

Карма: 4
Рейтинг сообщений: 111
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 960
Рейтинг сообщения: 0
Понятно. Мне параллельно на ваше мнение. Потому что вы даже не разобрались. Впрочем, как я уже написал, мне параллельно.
Я не видел ваших примеров. Итак, почему написано именно так. Первое, да, много дефайнов. И много писанины. Но зато, в дальнейшем, правка кода минимальна. Долго запрягаем, быстро едем. Второе. Я могу назначить любой пин мк. В одном месте. Есть и третье и так далее. Если я написал именно так, значит этому есть причина.
Жду вашего конструктивного ответа.


Последний раз редактировалось Demiurg Сб авг 22, 2020 20:57:30, всего редактировалось 1 раз.

Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 184 ]  1, , , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y