Экраны для самоделок

Jan 25, 2020 21:00

Изучил, какие бывают цветные LCD-экраны для Arduino и прочих самоделок.


Read more... )

Сделай сам, arduino, aliexpress, Электроника

Leave a comment

ata3d January 25 2020, 20:53:02 UTC
Они разные, последовательные каналы медленные, графический режим обновляется секундами, паралельные требуют много памяти и загружают процессор. Символы во всех мониторах, кроме тех, что с процессорами, формируются программно, поэтому можно вводить любые символы. Данные можно передавать пин WR и считывать пин RD, но считывание используется редко. Моделей много разных поэтому бывают заморочки из за несовместимости.

Reply

ammo1 January 25 2020, 21:00:11 UTC
Да, про скорость я зря не написал.
А почему "паралельные требуют много памяти и загружают процессор"? Вроде бы ровно столько же требуют и меньше загружают (процессор не занимается последовательной передачей кучи данных).

Reply

grafalexphoto January 25 2020, 21:17:28 UTC
Все дело в интерфейсах, которые реализованы в железе. Загружает больше, потому как параллельный интерфейс придется эмулировать, тогда как последовательный встроен в микроконтроллер.

Например, при последовательном интерфейсе алгоритм работы загрузки данных выглядит так:
- Эй микроконтроллер, вот тебе Х кб данных. Вперед, заливай в экран!
- Ок, заливаю первый байт....
<прерывание>
- я залил байт, давай следующий
- держи
<байт заливается в фоне, микроконтроллер занимается другими делами ( ... )

Reply

grafalexphoto January 25 2020, 21:27:27 UTC
Еще нюанс.

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

К сожалению это мечты. В АТМеге очень мало оперативы (2кб, вроде), в ЕСП оперативы чуть больше (20кб) но тоже мало. В любом случае буффер кадра целиком не влезет. Поэтому прибегают к трюку. Например изображение рисуется маленькими кусочками в стиле
- эй, экран, ограничь облась видимости областью 10:10x20:20
- экран, вот тебе 100 пикселей, нарисуй их на текущей области видимости

Линии рисуются примерно так же - организовывается прямоугольная область видимости шириной в 1 (или какая там нужна толщина) пикселей и заливается одним цветом. Т.е. это не привычный цикл в стиле "для х от 1 до 320", а управление экраном разного рода коммандами, которые занимают достаточно много времени. В итоге отрисовка одного кадра может занимать чуть ли не полсекунды. Для информатора с парой чисел покатит, но анимацию уже не отобразить.

Reply

ammo1 January 26 2020, 07:21:59 UTC
А зачем иметь буфер кадра в памяти, если он уже вроде как есть в экране?

Reply

grafalexphoto January 26 2020, 08:46:23 UTC
Есть 2 сложности ( ... )

Reply

ammo1 January 26 2020, 10:28:33 UTC
Ну да, тем более, что фон чёрный.

Reply

bbv2612beta January 26 2020, 10:49:21 UTC
Раз это неспешный информатор, может, проще не масштабировать символы, а рисовать их из линий/попиксельно?

Reply

grafalexphoto January 26 2020, 10:52:14 UTC
Я не про масштабирование, а про распаковку символов.
Масштабирование средствами микроконтроллера будет выглядеть некрасиво - проще заранее все отмасштабировать и положить в прошивку.
А рисовать линиями... Я думаю ардуиновские библиотеки примерно так и делают

Reply

bbv2612beta January 26 2020, 11:18:57 UTC
Давненько я не программировал. Лет 15 уже.
Вот и интересуюсь, может, проще в Ардуинке не распаковывать символы, а просто рисовать линиями их? Надо ведь буквально несколько цифр изобразить

Reply


Leave a comment

Up