Сторінка 1 з 2
Графічний дисплей
Додано: Сер серпня 09, 2023 7:41 am
Freddy
Намагаюся розібратися як створювати зображення на графічному дисплеї , цікавить саме сам процес як створити картинку і записати її в программу щоб потім послати на дисплей. Гугл не дає потрібного мені результату , або не правильно задаю питання або щось не правильно розумію. Може хтось порадить матеріал на цю тему ?
Re: Графічний дисплей
Додано: Сер серпня 09, 2023 10:48 am
Андрій_UR3ILF
Більшість сучасних дисплеїв типа ILI9341, ILI9486 та подiбнi працюють так- спочатку вказуються координати поля по Х і У і далі в це поле виводиться по піксельно за допомогою горозонтальної розгортки. Тобто починаючи з лівого кута по горизонталі і при досягненні кордону по Х "каретка" переміщується на наступний рядок по У.
Найшвидше в мене працював вивiд написаний на ассемблері з оптимізацією на мінімум тактів процессора. Після відправки беру наступний піксель і не чекаю завершення відправки по spi як це зроблено в більшості бібліотек. Готовність spi перевiряю тiльки перед відправкою. Це відсотків на 40 збільшило швидкість виведення на дисплей.
Очищення або заливка одним колором spi дисплея 320х240 пікселів за 108мс.
Шрифт 42х24 пікселя час виведення 2.4мс на знак.
Це був гарний результат для АТмел328.
Картинка створюється у вигляді масиву і виводиться піксельно як зображення в телевiзорах виводилося. Це для дисплеїв без вiдеодрайверу.
Re: Графічний дисплей
Додано: Сер серпня 09, 2023 8:32 pm
iurii
Особисто я коли розробляю графічне меню то роблю так:
1. В графічному редакторі створюю картинку потрібного розміру. Редактор може бути любим хоч і Paint.
2. Зберігаю в форматі BMP використовую або RGB565 або ж RGB888 формат кольорів
3. За допомого програми яку написав раніше з картинок генерую сішний файл в якому ця картинка представлена у вигляді масиву байтів.
(якщо чесно, то не зовсім масиву, а зазвичай я використовую (LUT) таблицю кольорів, але для початку можна просто все в масив записати)
4. Додаю цей файл до проекту і використовую в коді.
Для того щоб знати яку інформацію з bmp файлу потрібно записати в код раджу почитати
https://en.wikipedia.org/wiki/BMP_file_format
Re: Графічний дисплей
Додано: Сер серпня 09, 2023 9:34 pm
oldPsyho
А можна й не городити лісапеда, візьміть наприклад ту ж
LVGL. Там все це є.
Re: Графічний дисплей
Додано: Вів серпня 15, 2023 3:13 am
Freddy
iurii писав: ↑Сер серпня 09, 2023 8:32 pm
Особисто я коли розробляю графічне меню то роблю так:
1. В графічному редакторі створюю картинку потрібного розміру. Редактор може бути любим хоч і Paint.
2. Зберігаю в форматі BMP використовую або RGB565 або ж RGB888 формат кольорів
3. За допомого програми яку написав раніше з картинок генерую сішний файл в якому ця картинка представлена у вигляді масиву байтів.
(якщо чесно, то не зовсім масиву, а зазвичай я використовую (LUT) таблицю кольорів, але для початку можна просто все в масив записати)
4. Додаю цей файл до проекту і використовую в коді.
Для того щоб знати яку інформацію з bmp файлу потрібно записати в код раджу почитати
https://en.wikipedia.org/wiki/BMP_file_format
Якраз це й цікавило як картинку перевести в масив.
Re: Графічний дисплей
Додано: Вів серпня 15, 2023 5:37 am
UR5FFR
oldPsyho писав: ↑Сер серпня 09, 2023 9:34 pmА можна й не городити лісапеда, візьміть наприклад ту ж
LVGL. Там все це є.
LVGL дуже монстроідальна як на мій погляд. А якщо мова йде про 328му атмегу, то ще й прожерлива до ресурсів. Тільки шрифти там вже досить багато пам'яті споживають. А ще їй потрібний буфер у пам'яті для відмальовування. Це добре, коли оперативної пам'яті багато. А якщо її 2кб, з яких 1кб вже зайнято під стек?
Freddy писав: ↑Вів серпня 15, 2023 3:13 am
Якраз це й цікавило як картинку перевести в масив.
В мене теж самописна програма під Windows для транслювання файлу з малюнком у шматок коду з описом константи
Но дещо з підвивертом - я використовую стиснення. Щось на кшталт RLE. На деяких зображеннях ступінь стиснення досягає 4-5 разів - це заощаджує пам'ять, що на системах типу атмегі 328 дуже критично. Звісно що при відмальовуванні необхідно виконувати декомпресію такої стисненої картинки, але це дуже невеликий шматок коду десь 10-15 строк, який працює досить швидко бо алгоритм стиснення дуже простий.
Код відмалювання працює однаково на атмегі 328 через драйвер PDQ_GFX та на ESP32 через TFT_eSPI. На ESP32 відмальовка прискорюється за допомогою DMA.
Якщо ви використовуєте бібліотеку
Adafruit GXF, то там є
утиліта для цього
Image2Code: This is a handy Java GUI utility to convert a BMP file into the array code necessary to display the image with the drawBitmap function.
Але ви не написала яку платформу ви використовуєте
Re: Графічний дисплей
Додано: Суб серпня 19, 2023 9:00 pm
Freddy
328 мега але розумію що вона це не потягне (точніше я таке не напишу аби вона тягла) тому скоріше за все стм32. Але хочу зрозуміти з якої сторони підходити до графічних дисплеїв
Re: Графічний дисплей
Додано: Суб серпня 19, 2023 9:48 pm
oldPsyho
Перечитав тему...
Щось тз не сильно зрозуміле... Давайте для початку:
Які дісплеї у вас є?
Які девборди маєте (ардуїна, есп, стм, etc.)?
Re: Графічний дисплей
Додано: Вів серпня 22, 2023 4:51 pm
Freddy
oldPsyho писав: ↑Суб серпня 19, 2023 9:48 pm
Перечитав тему...
Щось тз не сильно зрозуміле... Давайте для початку:
Які дісплеї у вас є?
Які девборди маєте (ардуїна, есп, стм, etc.)?
є все ) нуклео , блю піл, нано і уно на 328 . Дисплей є на ST7735
Re: Графічний дисплей
Додано: Вів серпня 22, 2023 5:31 pm
oldPsyho
Freddy писав: ↑Вів серпня 22, 2023 4:51 pm
oldPsyho писав: ↑Суб серпня 19, 2023 9:48 pm
Перечитав тему...
Щось тз не сильно зрозуміле... Давайте для початку:
Які дісплеї у вас є?
Які девборди маєте (ардуїна, есп, стм, etc.)?
є все ) нуклео , блю піл, нано і уно на 328 . Дисплей є на ST7735
То в чому проблема? Не хочете використовувати наявні бібліотеки - беріть даташит на контроллер дисплея і вперед.