Графічний дисплей
Графічний дисплей
Намагаюся розібратися як створювати зображення на графічному дисплеї , цікавить саме сам процес як створити картинку і записати її в программу щоб потім послати на дисплей. Гугл не дає потрібного мені результату , або не правильно задаю питання або щось не правильно розумію. Може хтось порадить матеріал на цю тему ?
-
- Повідомлень: 38
- З нами з: Суб жовтня 01, 2022 3:36 pm
- Звідки: Царичанка
- Позивний: UR3ILF
- Has thanked: 4 times
- Been thanked: 13 times
- Контактна інформація:
Re: Графічний дисплей
Більшість сучасних дисплеїв типа ILI9341, ILI9486 та подiбнi працюють так- спочатку вказуються координати поля по Х і У і далі в це поле виводиться по піксельно за допомогою горозонтальної розгортки. Тобто починаючи з лівого кута по горизонталі і при досягненні кордону по Х "каретка" переміщується на наступний рядок по У.
Найшвидше в мене працював вивiд написаний на ассемблері з оптимізацією на мінімум тактів процессора. Після відправки беру наступний піксель і не чекаю завершення відправки по spi як це зроблено в більшості бібліотек. Готовність spi перевiряю тiльки перед відправкою. Це відсотків на 40 збільшило швидкість виведення на дисплей.
Очищення або заливка одним колором spi дисплея 320х240 пікселів за 108мс.
Шрифт 42х24 пікселя час виведення 2.4мс на знак.
Це був гарний результат для АТмел328.
Картинка створюється у вигляді масиву і виводиться піксельно як зображення в телевiзорах виводилося. Це для дисплеїв без вiдеодрайверу.
Найшвидше в мене працював вивiд написаний на ассемблері з оптимізацією на мінімум тактів процессора. Після відправки беру наступний піксель і не чекаю завершення відправки по spi як це зроблено в більшості бібліотек. Готовність spi перевiряю тiльки перед відправкою. Це відсотків на 40 збільшило швидкість виведення на дисплей.
Очищення або заливка одним колором spi дисплея 320х240 пікселів за 108мс.
Шрифт 42х24 пікселя час виведення 2.4мс на знак.
Це був гарний результат для АТмел328.
Картинка створюється у вигляді масиву і виводиться піксельно як зображення в телевiзорах виводилося. Це для дисплеїв без вiдеодрайверу.
-
- Повідомлень: 73
- З нами з: Суб жовтня 29, 2022 4:06 pm
- Has thanked: 14 times
- Been thanked: 26 times
Re: Графічний дисплей
Особисто я коли розробляю графічне меню то роблю так:
1. В графічному редакторі створюю картинку потрібного розміру. Редактор може бути любим хоч і Paint.
2. Зберігаю в форматі BMP використовую або RGB565 або ж RGB888 формат кольорів
3. За допомого програми яку написав раніше з картинок генерую сішний файл в якому ця картинка представлена у вигляді масиву байтів.
(якщо чесно, то не зовсім масиву, а зазвичай я використовую (LUT) таблицю кольорів, але для початку можна просто все в масив записати)
4. Додаю цей файл до проекту і використовую в коді.
Для того щоб знати яку інформацію з bmp файлу потрібно записати в код раджу почитати https://en.wikipedia.org/wiki/BMP_file_format
1. В графічному редакторі створюю картинку потрібного розміру. Редактор може бути любим хоч і Paint.
2. Зберігаю в форматі BMP використовую або RGB565 або ж RGB888 формат кольорів
3. За допомого програми яку написав раніше з картинок генерую сішний файл в якому ця картинка представлена у вигляді масиву байтів.
(якщо чесно, то не зовсім масиву, а зазвичай я використовую (LUT) таблицю кольорів, але для початку можна просто все в масив записати)
4. Додаю цей файл до проекту і використовую в коді.
Для того щоб знати яку інформацію з bmp файлу потрібно записати в код раджу почитати https://en.wikipedia.org/wiki/BMP_file_format
Re: Графічний дисплей
Якраз це й цікавило як картинку перевести в масив.iurii писав: ↑Сер серпня 09, 2023 8:32 pm Особисто я коли розробляю графічне меню то роблю так:
1. В графічному редакторі створюю картинку потрібного розміру. Редактор може бути любим хоч і Paint.
2. Зберігаю в форматі BMP використовую або RGB565 або ж RGB888 формат кольорів
3. За допомого програми яку написав раніше з картинок генерую сішний файл в якому ця картинка представлена у вигляді масиву байтів.
(якщо чесно, то не зовсім масиву, а зазвичай я використовую (LUT) таблицю кольорів, але для початку можна просто все в масив записати)
4. Додаю цей файл до проекту і використовую в коді.
Для того щоб знати яку інформацію з bmp файлу потрібно записати в код раджу почитати https://en.wikipedia.org/wiki/BMP_file_format
-
- Повідомлень: 815
- З нами з: Пон вересня 12, 2022 1:04 pm
- Has thanked: 43 times
- Been thanked: 295 times
Re: Графічний дисплей
LVGL дуже монстроідальна як на мій погляд. А якщо мова йде про 328му атмегу, то ще й прожерлива до ресурсів. Тільки шрифти там вже досить багато пам'яті споживають. А ще їй потрібний буфер у пам'яті для відмальовування. Це добре, коли оперативної пам'яті багато. А якщо її 2кб, з яких 1кб вже зайнято під стек?
В мене теж самописна програма під 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: Графічний дисплей
328 мега але розумію що вона це не потягне (точніше я таке не напишу аби вона тягла) тому скоріше за все стм32. Але хочу зрозуміти з якої сторони підходити до графічних дисплеїв
-
- Повідомлень: 375
- З нами з: П'ят жовтня 14, 2022 1:13 pm
- Звідки: KO40ig
- Позивний: UR5XOU
- Has thanked: 84 times
- Been thanked: 27 times
Re: Графічний дисплей
Перечитав тему...
Щось тз не сильно зрозуміле... Давайте для початку:
Які дісплеї у вас є?
Які девборди маєте (ардуїна, есп, стм, etc.)?
Щось тз не сильно зрозуміле... Давайте для початку:
Які дісплеї у вас є?
Які девборди маєте (ардуїна, есп, стм, etc.)?
-
- Повідомлень: 375
- З нами з: П'ят жовтня 14, 2022 1:13 pm
- Звідки: KO40ig
- Позивний: UR5XOU
- Has thanked: 84 times
- Been thanked: 27 times
Re: Графічний дисплей
То в чому проблема? Не хочете використовувати наявні бібліотеки - беріть даташит на контроллер дисплея і вперед.