Что нужно чтобы нарисовать интерфейс для часов? Заливка прямоугольных областей произвольным цветом, рисование линий, которые сами по себе прямоугольники, вывод текста и изображений, что фактически одно и то же Для всего этого достаточно задать окно и заполнить его данными, главное чтобы для разных дисплеев и ориентаций отрисовка внутри окна шла в одном направлении. И это можно сделать установив соответствующие биты в одном-двух регистрах дисплея... Ситуацию усложняет тот факт, что даже после этого не все дисплеи ведут себя одинаково, у каких-то вместе со сменой направлений могут поменяться оси или координаты придется вычитать из размера по соответствующей оси, но это все делается только при задании окна. И все, далее пользуясь только парой функций setWindow() и writeColor(), которые работают везде одинаково, можно нарисовать, допустим, линию. При выводе символа тоже будет одна setWindow() и множество writeColor(), при этом то и другое будет правильно рисоваться на любом экране где внутри окна данные выводятся слева направо и сверху вниз. Если нужен зеркальный шрифт, то даже не меняя направление можно передавать данные в другом порядке и все равно будет заметно быстрее, чем рисование точками. Хотя можно и точками рисовать, это ведь тоже прямоугольник единичного размера, только насколько большой объект там имеет смысл рисовать? Если картинка на весь экран, то наверняка придется ее выводить именно так, как я предлагаю рисовать все...
ILI9341 то ли я .... то ли лыжи не едут !!!!
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="goldenandy",url="/forum/viewtopic.php?p=3568180#p3568180"]А по сложностям библиотек.... тут или делать универсальность, либо затачивать под каждый дисплей отдельную библиотечку.[/uquote]
Что нужно чтобы нарисовать интерфейс для часов? Заливка прямоугольных областей произвольным цветом, рисование линий, которые сами по себе прямоугольники, вывод текста и изображений, что фактически одно и то же Для всего этого достаточно задать окно и заполнить его данными, главное чтобы для разных дисплеев и ориентаций отрисовка внутри окна шла в одном направлении. И это можно сделать установив соответствующие биты в одном-двух регистрах дисплея... Ситуацию усложняет тот факт, что даже после этого не все дисплеи ведут себя одинаково, у каких-то вместе со сменой направлений могут поменяться оси или координаты придется вычитать из размера по соответствующей оси, но это все делается только при задании окна. И все, далее пользуясь только парой функций setWindow() и writeColor(), которые работают везде одинаково, можно нарисовать, допустим, линию. При выводе символа тоже будет одна setWindow() и множество writeColor(), при этом то и другое будет правильно рисоваться на любом экране где внутри окна данные выводятся слева направо и сверху вниз. Если нужен зеркальный шрифт, то даже не меняя направление можно передавать данные в другом порядке и все равно будет заметно быстрее, чем рисование точками. Хотя можно и точками рисовать, это ведь тоже прямоугольник единичного размера, только насколько большой объект там имеет смысл рисовать? Если картинка на весь экран, то наверняка придется ее выводить именно так, как я предлагаю рисовать все...
Что нужно чтобы нарисовать интерфейс для часов? Заливка прямоугольных областей произвольным цветом, рисование линий, которые сами по себе прямоугольники, вывод текста и изображений, что фактически одно и то же Для всего этого достаточно задать окно и заполнить его данными, главное чтобы для разных дисплеев и ориентаций отрисовка внутри окна шла в одном направлении. И это можно сделать установив соответствующие биты в одном-двух регистрах дисплея... Ситуацию усложняет тот факт, что даже после этого не все дисплеи ведут себя одинаково, у каких-то вместе со сменой направлений могут поменяться оси или координаты придется вычитать из размера по соответствующей оси, но это все делается только при задании окна. И все, далее пользуясь только парой функций setWindow() и writeColor(), которые работают везде одинаково, можно нарисовать, допустим, линию. При выводе символа тоже будет одна setWindow() и множество writeColor(), при этом то и другое будет правильно рисоваться на любом экране где внутри окна данные выводятся слева направо и сверху вниз. Если нужен зеркальный шрифт, то даже не меняя направление можно передавать данные в другом порядке и все равно будет заметно быстрее, чем рисование точками. Хотя можно и точками рисовать, это ведь тоже прямоугольник единичного размера, только насколько большой объект там имеет смысл рисовать? Если картинка на весь экран, то наверняка придется ее выводить именно так, как я предлагаю рисовать все...
- Реклама
Эти функции есть, они идут с драйвером дисплея. Никто не мешает их использовать. А либа - только надстройка.Reflector писал(а):И все, далее пользуясь только парой функций setWindow() и writeColor()
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="goldenandy",url="/forum/viewtopic.php?p=3568269#p3568269"]Эти функции есть, они идут с драйвером дисплея. Никто не мешает их использовать. А либа - только надстройка.[/uquote]
Так об этом и речь, затачивать под каждый дисплей отдельную библиотечку не нужно, достаточно буквально несколько функций которые на всех дисплеях работают одинаково
Так об этом и речь, затачивать под каждый дисплей отдельную библиотечку не нужно, достаточно буквально несколько функций которые на всех дисплеях работают одинаково
Reflector , да кто б возражал.
Я под себя написал такую библиотечку.
Вам она не понравилась... Ваше право. Но, критикуя - предлагайте! Напишите простую универсальную и быструю либу с несколькими функциями, которые на всех дисплеях работают одинаково, да выложите на форум... Или статью напишите. Люди только спасибо скажут. (только сразу предусмотрите вариант, когда вашу либу будут пытаться натягивать на монохромные дисплеи, у которых совершенно другие контроллеры и команды загрузки данных)
Я под себя написал такую библиотечку.
Вам она не понравилась... Ваше право. Но, критикуя - предлагайте! Напишите простую универсальную и быструю либу с несколькими функциями, которые на всех дисплеях работают одинаково, да выложите на форум... Или статью напишите. Люди только спасибо скажут. (только сразу предусмотрите вариант, когда вашу либу будут пытаться натягивать на монохромные дисплеи, у которых совершенно другие контроллеры и команды загрузки данных)
goldenandy, подскажите пожалуйста,комманды инициализации и управления ILI9341 с SPI интерфейсом и 8-битной шиной одинакова?
хочу перевести один проект на ILI9341 с 8-битной шиной,вроде как скорость отрисовки экрана должна вырасти...
хочу перевести один проект на ILI9341 с 8-битной шиной,вроде как скорость отрисовки экрана должна вырасти...
- Реклама
Novice user, А вот не знаю. У меня живьем только 2 дисплея с 16-битной шиной.
Со SPI-интерфейсом у меня дисплей на контроллере ST7735 - он почти совместим по принципу и командам с ILI9341.
Так что по работе по 8битке - читайте ДШ (раздел 7.1 MCU interfaces) и гуглите, у меня таких дисплеев не было и я не работал с ними.
ЗЫ. Вроде как для андурины есть шилд с ILI9341 и 8битной шиной. Если есть такой шилд, то и андурино-библиотека есть. Из нее можно выковырять принципы обмена по 8битке. Скорее всего, там одно отличие от 16битного режима - настройка конфиг.регистра на работу по 8 битам и передача слова за 2 такта.
Со SPI-интерфейсом у меня дисплей на контроллере ST7735 - он почти совместим по принципу и командам с ILI9341.
Так что по работе по 8битке - читайте ДШ (раздел 7.1 MCU interfaces) и гуглите, у меня таких дисплеев не было и я не работал с ними.
ЗЫ. Вроде как для андурины есть шилд с ILI9341 и 8битной шиной. Если есть такой шилд, то и андурино-библиотека есть. Из нее можно выковырять принципы обмена по 8битке. Скорее всего, там одно отличие от 16битного режима - настройка конфиг.регистра на работу по 8 битам и передача слова за 2 такта.
Даташит смотрел,вроде как должно быть одинаково но не инициализируется,пример брал отсюда https://datagor.ru/microcontrollers/mic ... i9341.html
Я не увидел на датагоре последовательности инициализации дисплея. Там вагон и тележка команд отправляются в дисплей. Посмотрите у ЕАКС.МИ (его исходники живут на гитхабе)
И да, проверьте, что бы у вас уровни были 3.3 вольта. 9341 толерантен к 5 вольтам на входе, но не понимает их.
И да, проверьте, что бы у вас уровни были 3.3 вольта. 9341 толерантен к 5 вольтам на входе, но не понимает их.
Про уровни не сразу сообразил,переделываю плату с делителями,чтение дисплея мне не надо,переводить атмегу на питание 3,3 вольта не получится-он управляет фифобуфером IDT7201
И еще-на плате дисплея есть IM0 и IM3,выв 11 и 21 соответственно, http://forum.cxem.net/uploads/monthly_0 ... 952770.jpg ,как их подключить?
Дисплей от DSO138
И еще-на плате дисплея есть IM0 и IM3,выв 11 и 21 соответственно, http://forum.cxem.net/uploads/monthly_0 ... 952770.jpg ,как их подключить?
Дисплей от DSO138
попробуйте запустить мегу от 3.3 вольт, что б убедиться, что вы можете управлять дисплеем. потом вернетесь на 5 вольт с делителями.
IM0 и IM3 - не знаю. На самом дисплее они так же подписаны ?
Добавлено after 1 minute 20 seconds:
Вдогонку. Смотрите даташит на контроллер дисплея, главу 7. IM0, IM1, IM2 и IM3 определяют режим шины дисплея.
Добавлено after 5 minutes 46 seconds:
https://cdn-shop.adafruit.com/datasheets/ILI9341.pdf - стр.26
IM0 и IM3 - не знаю. На самом дисплее они так же подписаны ?
Добавлено after 1 minute 20 seconds:
Вдогонку. Смотрите даташит на контроллер дисплея, главу 7. IM0, IM1, IM2 и IM3 определяют режим шины дисплея.
Добавлено after 5 minutes 46 seconds:
https://cdn-shop.adafruit.com/datasheets/ILI9341.pdf - стр.26
goldenandy, Спасибо большое!Я согласование уровней не поставил,и выв RD посадил на минус,то есть только чтение,перепаял на +3,3 в и все пошло как надо!





