US5IVZ Опубликовано 26 ноября, 2017 Жалоба Поделиться Опубликовано 26 ноября, 2017 Понял. Спасибо "за науку"! Буду теперь разбираться с раскладкой гетеродинов и IF. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Gluck35533 Опубликовано 22 декабря, 2017 Жалоба Поделиться Опубликовано 22 декабря, 2017 Решил добавить поддержку ST7735 пока автор занят и т.к. ILI9341 у меня нет.Скачал библиотеки PDQ_GFX, PDQ_ST7735, PDQ_ILI9341 Чтобы не удалять поддержку экранов ILI9341 сделал следующее: В Syntez.ino после строк:#ifdef DISPLAY_TFT_ILI9341 #include "disp_ILI9341.h"#endifДобавил:#ifdef DISPLAY_TFT_ST7735 #include "disp_ST7735.h"#endif После строк:#ifdef DISPLAY_TFT_ILI9341 Display_ILI9341_SPI disp;#endifДобавил:#ifdef DISPLAY_TFT_ST7735 Display_ST7735_SPI disp;#endif В config.h внёс изменения:// раскоментарить тип используемого дисплея (только один!)//#define DISPLAY_LCD_1602//#define DISPLAY_TFT_ILI9341#define DISPLAY_TFT_ST7735 Добавил в проект disp_ST7735.h и disp_ST7735.cpp которые создал из disp_ILI9341.h и disp_ILI9341.cpp путем их переименования.Оригинальные disp_ILI9341.h и disp_ILI9341.cpp тоже оставил в папке проекта. Отредактировал в созданных disp_ST7735.h и disp_ST7735.cpp имена классов, функций и имена макросов в препроцессорных директивах т.е. заменил везде ILI9341 на ST7735.В disp_ST7735.cpp указал пины к которым подключен дисплей.Вывод reset дисплея подключил к выводу reset ардуины иначе дисплей не заводился. Так вот вопрос:Если оставить файлы disp_ILI9341.h и disp_ILI9341.cpp в папке проекта и попробовать его откомпилировать то вываливается куча ошибок типа: sketch\disp_ST7735.cpp.o (symbol from plugin): In function `Display_ST7735_SPI::reset()': (.text+0x0): multiple definition of `cur_freq' sketch\disp_ILI9341.cpp.o (symbol from plugin) :(.text+0x0): first defined here И так по всем переменным которые определены в disp_ILI9341.cpp т.е. cur_freq, cur_freq2, cur_freq_buf, cur_vfo_idx.... и т.д. По моей логике если в config.h есть единственный раскоментированый #define DISPLAY_TFT_ST7735А в Syntez.ino есть директивы препроцессору:#ifdef DISPLAY_TFT_ST7735 #include "disp_ST7735.h"#endifто причем тут вообще disp_ILI9341.cpp и multiple definition?По моему мнению компилятор в disp_ILI9341.cpp вообще заглядывать не должен?Поправьте меня если я не прав. Если удалить из папки проекта файлы disp_ILI9341.h и disp_ILI9341.cpp то проект собирается без ошибок, загружается и дисплей ST7735 работает.За исключением естественно того, что все надписи сикось накось потому что нужно еще править размер шрифтов и координаты начала вывода строк. Как лучше поступить что-бы оставить поддержку обоих дисплеев?Перенести определение переменных которые определены в disp_ILI9341.cpp т.е. cur_freq, cur_freq2, cur_freq_buf, cur_vfo_idx.... и т.д. в другой файл? или тупо переименовать их в файле disp_ST7735.cpp?Или можно как-то поменять директивы препроцессора в Syntez.ino? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Relayer Опубликовано 22 декабря, 2017 Автор Жалоба Поделиться Опубликовано 22 декабря, 2017 Киньте мне в личку файлы проекта после правки - попробую скомпилить Цитата dsрview.com Ссылка на комментарий Поделиться на другие сайты Поделиться
Gluck35533 Опубликовано 22 декабря, 2017 Жалоба Поделиться Опубликовано 22 декабря, 2017 Андрей, отправил! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Relayer Опубликовано 22 декабря, 2017 Автор Жалоба Поделиться Опубликовано 22 декабря, 2017 Мда. В общем "лечится" просто - убираем файлы disp_ILI9341.* из каталога проекта. Пока ничего более изящного не получилось сделать. Почему так - долгая история связанная с тем как сделана PDQ_GFX Gluck35533 1 Цитата dsрview.com Ссылка на комментарий Поделиться на другие сайты Поделиться
Gluck35533 Опубликовано 22 декабря, 2017 Жалоба Поделиться Опубликовано 22 декабря, 2017 Жаль конечно (( С ST7735 наверно тоже печалька выйдет. Я посмотрел код касаемо координат вывода на экран различных частей интерфейса синтезатора.Боюсь я там без Ваших коментариев не разберусь.Вам Андрей как разработчику его проще будет переписать под этот экран чем мне въехать в суть происходящего там. В любом случае отличный проект получился и очень хорошо, что Вы не бросаете его, оказываете техническую поддержку людям которые его повторяют! Я собираю данный синтезатор для приемника.Попробую пока с LCD 1602 оценить функционал.Если мне подойдет и с ST7735 не срастется куплю ILI9341 и не буду париться.В любом случае спасибо за разработку и удачи! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Gluck35533 Опубликовано 26 декабря, 2017 Жалоба Поделиться Опубликовано 26 декабря, 2017 Приветствую Андрей! Решился я таки переписывать графику под ST7735.Вроде разобрался и уже многое поправил.Так что к Новому Году будет всем пользователям подарочек в виде поддержки ST7735. Возникло пару вопросов и предложений. В вашем коде для ILI9341 когда на экран выводится номер диапазона на всех диапазонах кроме 160 метров зачем-то выводится первым символом восклицательный знак.т.е. вместо 80 на экране мы видим !80. Вот код из disp_ILI9341.cpp: if (trx.BandIndex != cur_band) { if ((cur_band=trx.BandIndex) >= 0) { int mc = Bands[trx.BandIndex].mc; char buf[4]; buf[3] = 0; buf[2] = '0'+mc%10; mc/=10; buf[1] = '0'+mc%10; mc/=10; if (mc > 0) buf[0] = '0'+mc; else buf[0] = '!'; drawBtn(30,0,30,20,buf,ST7735_BLACK,ST7735_BLUE); } else drawBtn(30,0,30,20,"",ST7735_BLACK,ST7735_BLUE); } Вот эта строка зачем? else buf[0] = '!'; Из-за того, что экран значительно меньше (160х128 пикселей, а не 320х240) шрифты пришлось значительно уменьшить.В связи с этим часы с указанием даты и времени скорее всего не влезут в верхнюю строку над S-метром.Для того чтобы они влезли все надписи над S-метром придется еще сильнее уменьшить и они будут трудно читаемые.В принципе как и сами часы если они при этом влезут. Модуля RTC у меня нет следовательно попробовать не получится.Да я думаю не слишком это нужная вещь в синтезаторе. Вместо часов в верхний правый угол экрана думаю сделать вывод символа блокировки энкодера.Но не как это сделано сейчас символом "#", а в виде кнопочки как у "RIT", "QRP" и прочих.Думаю так будет красивее и полезнее. И еще заметил одну странность.Шкала S-метра выводится в цикле: for (int j=0; j < 15; j++) tft.drawRect(j*10+4,SMetr_Y+8,9,SMetr_H,(j < 9 ? ILI9341_GREEN : ILI9341_RED)); Т.е. квадратики красные и зеленые должны иметь одинаковые размеры и расположены на одной горизонтальной линии.А по факту размер у них одинаковый, но красные визуально на экране смотрятся чуть выше расположенными относительно зеленых.Не знаю с чем это связанно, может это косяк PDQ_GFX или просто из-за строения пикселя экрана и различия в яркости цветов, но мне кажется на фотках экрана ILI_9341 которые лежат на 5-ой странице ветки тоже это видно. Посмотрите у себя на железе так это или нет. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Relayer Опубликовано 26 декабря, 2017 Автор Жалоба Поделиться Опубликовано 26 декабря, 2017 С шрифтами есть некоторые нюансы. Используются упакованные шрифты, которые занимают меньше места. Именно из-за этого я и переписывал PDQ_GFX (мои правки были включены автором в основной транк). В коде шрифты подключаются вот тут: #ifdef GFX_FONT_PACKED #include "font\Gadugi58.pck.h" #include "font\Tahoma28.pck.h" #include "font\Tahoma18.pck.h" #else #include "font\Gadugi58.h" #include "font\Tahoma28.h" #include "font\Tahoma18.h" #endif Упакованные шрифты генерируются с помощью утилиты TTF2GFX. При этом задается ограниченный набор символов (для дополнительного уменьшения объема). Трбуемые наборы символов можно посмотреть в самих файлах шрифтов. Например для Tahoma28.pck.h в первой строчке перечисленны символы (цифры и точка) // Font charset: 0123456789. При генерации шрифта в него всегда принудительно включается пробел. По сути для символа пробела указывается только его ширина. И вот тут мы приходим к символу "!". Откроем Tahoma28.pck.h const GFXglyph Tahoma28Glyphs[] PROGMEM = { {0, 0, 0, 12, 0, 0}, // , 0 {0, 0, 0, 20, 0, 0}, // !, 0 {0, 0, 0, 12, 0, 0}, // ", 0 .............. Эта структура описывает глифы - собственно изображение самих символов. Важно что шрифты у нас TFT и ширина символа разная. Для пробела просто указывается ширина в 12 пикселей и нет ссылки на данные глифа. Для символа "!" аналогично указывается только ширина 20 пикселей. По сути "!" используется в качестве "широкого пробела" для очистки знакоместа при выводе текста. Для этого в автоматически сгенерированном утилитой TFT2GFX файле шрифты руками для этого символа была прописана требуемая "ширина".по факту размер у них одинаковый, но красные визуально на экране смотрятся чуть выше расположенными относительно зеленых.Не знаю с чем это связанно, может это косяк PDQ_GFX или просто из-за строения пикселя экрана и различия в яркости цветов, но мне кажется на фотках экрана ILI_9341 которые лежат на 5-ой странице ветки тоже это видно.Мне кажется что это связанно както со строением пикселя у самого экрана и/или визуальным восприятием Цитата dsрview.com Ссылка на комментарий Поделиться на другие сайты Поделиться
Gluck35533 Опубликовано 27 декабря, 2017 Жалоба Поделиться Опубликовано 27 декабря, 2017 И так представляю на внимание общественности проект синтезатора разработанного UR5FFR с добавленной поддержкой экрана ST7735 128x160 пикселей. Данная сборка софта обеспечивает работу с экраном ST7735 128x160 пикселей либо с экраном 16х2 LCD.Удалена поддержка ILI9341 в виду конфликта библиотек и RTC в виду отсутствия места для вывода часов на маленьком экране.Для обеспечения полной функциональности используйте оригинальную версию софта от Relayer. Принцип настройки и конфигурирования синтезатора остался прежним.Графический интерфейс синтезатора остался практически прежним за исключением добавления надписи LOCK в правом верхнем углу экрана вместо часов. Из меню удалены настройки и пункты связанные с RTC.Меню адаптированно под экран ST7735 128x160 и добавлены заголовки в некоторых подменю. Из изменений по файлам проекта: - добавлен шрифт Tahoma8 которым выводятся теперь подписи на кнопках;- шрифт Tahoma18 оставлен без изменений.Сейчас он используется только для вывода частоты настройки B.Я не стал удалять из него буквы которыми раньше выводились надписи на кнопках для обеспечения совместимости;- шрифт Gadugi58 удален за ненадобностью.Раньше им выводилась частота настройки А;- добавлен шрифт Tahoma28.Сейчас он используется для вывода частоты настройки А;- все связанное с RTC в коде я просто закоментировал, а файлы TinyRTC.* перенес на директорию выше.Но они есть в архиве;- удалены файлы disp_ILI9341.* , вместо них добавлены disp_ST7735.*;- файл menu.h откорректирован для обеспечения корректного вывода меню на ST7735 128x160 и удаления из меню пунктов связанных RTC;- в config.h частота кварца SI5351 изменена с 27 на 25 МГц.Обращайте внимание на это при настройке железа.Просто на моей плате кварц на 25 МГц стоит;- в Syntez.ino строки связанные с ILI9341 заменены на соответствующие для работы с ST7735;- в Syntez.ino поправлен адрес i2c адаптера к которому подключена клавиатура и параметр отвечающий за число импульсов на оборот для энкодера.Мой энкодер выдает 600 имп.\ об; В целом все.Проект проверен на железе на сколько это возможно.Багов не обнаружено.У меня аккаунта на Гитхабе нет по этому выкладываю здесь. Огромная просьба к Андрею разместить его у себя и при желании добавить меня в copyright.Замечания по работе софта приветствуются. SyntezSi5351_ST7735_1602LCD_NO_RTC.zip Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Relayer Опубликовано 27 декабря, 2017 Автор Жалоба Поделиться Опубликовано 27 декабря, 2017 Спасибо за проделанную работу. После праздников планирую заняться софтом поплотнее - постараюсь все же как-то разобраться с конфликтами. И тогда уже выложу все на гитхабеPS и кого в копирайты добавлять то? Цитата dsрview.com Ссылка на комментарий Поделиться на другие сайты Поделиться
Gluck35533 Опубликовано 27 декабря, 2017 Жалоба Поделиться Опубликовано 27 декабря, 2017 Было бы не плохо разобраться с конфликтами и сделать один софт для трёх экранов.Мне кажется там дело не в PDQ_GFX, а в Ардуиновском препроцессоре.Буду следить за темой. По поводу копирайта эт я так пошутил)Если добавите - мне будет приятно.В профиле моем все ж написано.Дмитрий Фролов.Позывного у меня нет.Я вольный слушатель эфира ))) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Relayer Опубликовано 27 декабря, 2017 Автор Жалоба Поделиться Опубликовано 27 декабря, 2017 Да тут задумка не только для трех экранов чтобы был один софт но и для Si570 тоже добавить наработки Цитата dsрview.com Ссылка на комментарий Поделиться на другие сайты Поделиться
ra4rad Опубликовано 6 января, 2018 Жалоба Поделиться Опубликовано 6 января, 2018 @Gluck35533, Фото экрана в студию! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Gluck35533 Опубликовано 9 января, 2018 Жалоба Поделиться Опубликовано 9 января, 2018 Я тут в связи с праздниками немного отвлекся от компьютера.Фотки вечером сделаю конечно, может даже маленький видосик сниму чтобы наглядно было видно как все это отображается на экране, но сильных отличий от того, что выкладывал автор там нет.Как я писал уже, графический интерфейс оставлен без изменений практически.Просто все "уменьшено", чтобы влезло на экран с меньшим количеством пикселей. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Gluck35533 Опубликовано 9 января, 2018 Жалоба Поделиться Опубликовано 9 января, 2018 Сделал фото.Получилось честно говоря отвратненько.Но общий смысл понятен.В живую конечно красивее всё. Relayer 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.