WI-FI интернет радио.

10427 ответов [Последнее сообщение]
EagleB3
Offline
Зарегистрирован: 12.04.2020

spazmalgon пишет:
В схеме KaRadio32 указано что к шине SPI подключаются контакты: LCD_CS   LCD_RESET   LCD_AO     MOSI     SCK    LCD_LED. Может имеется возможность подключения вышеуказанного дисплея к KaRadio32?
Вы напишите, что за дисплей Вы купили. Какой на нем контроллер. Ссылку на товар. Дальше надо искать даташит на Ваш дисплей, а если не найдется - на контроллер.

Но, думаю, что ответ - "нельзя". Или "не имеет смысла" - потому, что придется или много чего дописывать, или добавлять какой-то модуль сопряжения = время/деньги...

 

spazmalgon
Offline
Зарегистрирован: 22.08.2020

EagleB3 пишет:

spazmalgon пишет:
В схеме KaRadio32 указано что к шине SPI подключаются контакты: LCD_CS   LCD_RESET   LCD_AO     MOSI     SCK    LCD_LED. Может имеется возможность подключения вышеуказанного дисплея к KaRadio32?
Вы напишите, что за дисплей Вы купили. Какой на нем контроллер. Ссылку на товар. Дальше надо искать даташит на Ваш дисплей, а если не найдется - на контроллер.

Но, думаю, что ответ - "нельзя". Или "не имеет смысла" - потому, что придется или много чего дописывать, или добавлять какой-то модуль сопряжения = время/деньги...

Был куплен дисплей "Сенсорный дисплей Arduino TFT 2.4" LCD" . В отношении контроллера "Контроллер сенсорной панели SPFD5408 со встроенным кадровым буфером" Ссылки на фото товара (продавец, у которого брал товар, не выложил актуальных фото товара, так что пришлось брать фото на другом ресурсе) Это не реклама, так что прошу не удалять https://prom.ua/p996712921-displej-tft-240320.html (Не получается вставить фото в сообщение)  Сильно не пинайте, я из категории "тестеров" да и то - начинающий. Даташит на дисплей и на контроллер - искал, но для меня это такой дремучий лес. Вот и прошу о помощи.

толстый
Offline
Зарегистрирован: 10.02.2020

1. Этот контроллер в КаРадио32 не поддерживается. Плюс интересный факт. Есть у меня такой же дисплей с заявленным китайцем таким же контроллером. По итогу "унутре у ней" стоит R61526A.
2. Даже если там окажется ILI9341(что крайне маловероятно), для перевода из 8бит параллельного режима работы хотя бы в SPI(I2C не каждый дисплей поддерживает) придётся отдирать дисплей, где-то отрезать, где-то добавить, а там усё мелкое и очень нежное.
3. У этих дисплеев частенько инвертирован тач, что добавит Вам -"тестеру" дополнительного геморроя с самостоятельной компиляцией проекта. А это удалось, судя по ветке, очень немногим -пересчитать можно по пальцам руки(причём плохого токаря).

Моя "помощь": приобрести дисплей на шине I2C или SPI из списка поддерживаемых проэктом.

spazmalgon
Offline
Зарегистрирован: 22.08.2020

толстый пишет:
1. Этот контроллер в КаРадио32 не поддерживается. ...... придётся отдирать дисплей, где-то отрезать, где-то добавить, а там усё мелкое и очень нежное. 3. .....что добавит Вам -"тестеру" дополнительного геморроя с самостоятельной компиляцией проекта. А это удалось, судя по ветке, очень немногим -пересчитать можно по пальцам руки(причём плохого токаря). Моя "помощь": приобрести дисплей на шине I2C или SPI из списка поддерживаемых проэктом.

Понял, что приобрёл дисплей не понимая что не все дисплеи поддерживаются проектом КаРадио32. Итал документацию и не придал внимания разделу, указанному в руководстве к КаРадио32. Я всего лишь  "тестер", и компиляция проекта - для меня очень "дремучий лес". О том что прийдёться приобретать другой дисплей - понял. Вот перебирал (на основании перечня у КаРадио32) дисплеи, выставляемые интернет магазинами. Попутно, два вопроса.

1. При работе WiFi Radio, какая информация выводится на дисплей. Если не затруднит, кто нибуть выложите фото.

2. А подойдёт ли к проэкту, дисплей линейки Nextion? Есть ли где скетч КаРадио32 с управлением радио через тачскрин дисплея?

DMS
Offline
Зарегистрирован: 09.01.2020

spazmalgon пишет:

1. При работе WiFi Radio, какая информация выводится на дисплей. Если не затруднит, кто нибуть выложите фото.

2. А подойдёт ли к проэкту, дисплей линейки Nextion? Есть ли где скетч КаРадио32 с управлением радио через тачскрин дисплея?

Посмотри на ютубе видосы Пильникова, Nadim, Павлюченко и т.д.

Например https://youtu.be/uttoxtTN5SQ

У карадива GUI так себе. Смысла брать большой-дорогой дисплей особо нет, разве что на вырост - может когда нибудь авторы им займутся.

Мелкий тоже как то не очень. 2.4"-2.8" - оптимально на мой взгляд.

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

Энкодером  или кнопками удобнее.

Кстати видел на ютубе чел подключал парллельный дисплей к spi, что то соединял, что то резал. Не помню к какому аппарату.

Но как уже сказали, если контроллер не поддерживается то все равно ничего не выйдет.

Egen_M
Egen_M аватар
Offline
Зарегистрирован: 01.05.2015

spazmalgon пишет:

толстый пишет:
1. Этот контроллер в КаРадио32 не поддерживается. ...... .

1. При работе WiFi Radio, какая информация выводится на дисплей. Если не затруднит, кто нибуть выложите фото.

Дисплей SPI 4" 320x480 драйвер st7796s (ILI9488) . Проект КаРадио32 такой дисплей не поддерживает. Подключён к проекту Edzelf ESP32 radio, который тоже его на прямую не поддерживал, поэтому пришлось поизголяться над прошивкой, чтобы подключить дисплей. В проекте Edzelf ESP32 всё написано в Arduino IDE, а для меня это привычнее.  Вывод информации русифицировал, и немного изменил, сделал под свои нужды.

Два месяца назад, автор Edzelf ESP32 выложил обновление прошивки, добавил к радио визуализатор спектра. 

https://github.com/blotfi/ESP32-Radio-with-Spectrum-analyzer

https://www.youtube.com/watch?v=mSrDDmvLRfI 

Я пока не пробовал эту обнову.

spazmalgon
Offline
Зарегистрирован: 22.08.2020

DMS пишет:

spazmalgon пишет:

1.

2. ?

Посмотри на ютубе видосы Пильникова, Nadim, Павлюченко и т.д.

Например https://youtu.be/uttoxtTN5SQ

У карадива GUI так себе. Смысла брать большой-дорогой дисплей особо нет, разве что на вырост - может когда нибудь авторы им займутся.

Мелкий тоже как то не очень. 2.4"-2.8" - оптимально на мой взгляд.

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

Энкодером  или кнопками удобнее.

Кстати видел на ютубе чел подключал парллельный дисплей к spi, что то соединял, что то резал. Не помню к какому аппарату.

Но как уже сказали, если контроллер не поддерживается то все равно ничего не выйдет.

Спасибо за разъяснения. Буду смотреть Пыльникова, Павлюченко, Nadim(a).

Ну а в отношении дисплея с не поддерживаемым контроллером- буду ждать, может кто либо "допилит" КаРадио32 и вклинит этот контроллер. У меня "тяму не хватает".

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

У вас тяму не хватает, а у ESP пинов. Слишком расточительно расходовать столько ножек на дисплей. Кстати Nextion можно подключить к Карадио и про это у автора есть. https://hackaday.io/project/19707-nextion-touchscreen-display-for-web-player-karadio https://www.youtube.com/watch?v=ekWf2dr7sis Но это слишком, кмк. Ваш дисплей тоже можно присобачить, но потом, когда из тестеров подрастете до софтомарателей. На самом деле на ардуине можно накалякать аддон, подглядев реализацию тут https://github.com/karawin/karadio-addons. Но опять же, повторюсь - это все при наличии маломальского опыта в программировании.

spazmalgon
Offline
Зарегистрирован: 22.08.2020

Egen_M пишет:

spazmalgon пишет:

толстый пишет:
1. Этот контроллер в КаРадио32 не поддерживается. ...... .

1.

Дисплей SPI 4" 320x480 драйвер st7796s (ILI9488) . Проект КаРадио32 такой дисплей не поддерживает. Подключён к проекту Edzelf ESP32 radio, который тоже его на прямую не поддерживал, поэтому пришлось поизголяться над прошивкой, чтобы подключить дисплей. В проекте Edzelf ESP32 всё написано в Arduino IDE, а для меня это привычнее.  Вывод информации русифицировал, и немного изменил, сделал под свои нужды.

Два месяца назад, автор Edzelf ESP32 выложил обновление прошивки, добавил к радио визуализатор спектра. 

https://github.com/blotfi/ESP32-Radio-with-Spectrum-analyzer

https://www.youtube.com/watch?v=mSrDDmvLRfI 

Я пока не пробовал эту обнову.

Спасибо за фотографии.

В отношении проэкта Edzelf(а). В своих мануалах он вообще не указывает на каких контроллерах поддерживаются дисплеи. В предыдущем проэкте он (Edzelf) озвучил что реализована поддержка SD картридера, но что то не получается зупустить SD ридер, хотя и подпаиваюсь (в соответствии с мануалом) на пины 23, 18, 19, 21 (или 22) шины SPI. но на этих пинах так же  висит и VS 1053Когда вставляю SD карточку в ридер, то воспроизведение виснет намертво. . Рестарт не помогает.. Заводится после того как деинсталирую SD из рилера.

А еа последней прошивке Edzelf(а) заявлена поддержка USB шилда. Только кагда закоментирована поддержка SD а остаётся поддержка USB, компиляция прходит+ заливка тоже, а вот на адрес 192.168.4.1 не выходит и виснет. Ступор полнейший и не высвечивается новая точка доступа. Так что приходится закоментировать USB поддержку и пршиваться на Sd, хотя и не получается прикрутить SD. 

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

sd и дисплей оба сидят на spi шине (так можно), на ней же сидит и vs1053. Система рулит устройствами на этой шине посредством сигналов CS. Они должны быть для каждого устройства свои. если вы прописали один CS на два устройства - будет затык. Если подключили CS от двух устройств вместе на один пин есп - будет затык.

Еще у есп некоторые пины могут быть только входными, а CS - это выход

spazmalgon
Offline
Зарегистрирован: 22.08.2020

pilnikov пишет:

.....Ваш дисплей тоже можно присобачить, но потом, когда из тестеров подрастете до софтомарателей. ....это все при наличии маломальского опыта в программировании.

Спасибо за разъяснения, но вырасти до самостоятельного написания софта - я реально понимаю, что у меня не получится, базиса знаний не хватает. А в отношении дисплея NEXTION у КаrаWin(a), я видел на его странице.

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

если у вас есть платка ардуино уно (или мега) попробуйте подключить свой дисплей и получить на нем хоть какую нить внятную картинку. Получится - я попробую вам помочь с аддоном.

spazmalgon
Offline
Зарегистрирован: 22.08.2020

pilnikov пишет:

если у вас есть платка ардуино уно (или мега) попробуйте подключить свой дисплей и получить на нем хоть какую нить внятную картинку. Получится - я попробую вам помочь с аддоном.

Платы ардуино, у меня нет, но я закажу в интернет магазине, доставят на следующей неделе. Только подскажите какую лучше заказывать Uno или Mega 250? Они ведь чем то отличаются друг от друга. А то влетать опять не хочется.

spazmalgon
Offline
Зарегистрирован: 22.08.2020

pilnikov пишет:

sd и

Еще у есп некоторые пины могут быть только входными, а CS - это выход

Назначал (для CS) и 21 и 22 , как писалось в мануале, но что то не получается завести SD/ Ступор спошной.

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

spazmalgon пишет:

pilnikov пишет:

если у вас есть платка ардуино уно (или мега) попробуйте подключить свой дисплей и получить на нем хоть какую нить внятную картинку. Получится - я попробую вам помочь с аддоном.

Платы ардуино, у меня нет, но я закажу в интернет магазине, доставят на следующей неделе. Только подскажите какую лучше заказывать Uno или Mega 250? Они ведь чем то отличаются друг от друга. А то влетать опять не хочется.

уна дешевле, мега мощней

spazmalgon
Offline
Зарегистрирован: 22.08.2020

pilnikov пишет:

spazmalgon пишет:

pilnikov пишет:

,,, помочь с аддоном.

,,, какую лучше заказывать Uno или Mega 250? ,,

уна дешевле, мега мощней

Ну а что обеспечит поддержку приобретённого мною "чудо" дисплея?

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Любая

spazmalgon
Offline
Зарегистрирован: 22.08.2020

pilnikov пишет:

Любая

Заказал плату UNO. Оплатил. На этой неделе жду доставку.

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

пока ждете, поищите скеч под ваш дисплейчик

тут http://arduino.ru/forum/apparatnye-voprosy/deshevyi-tft-24-displei-na-spfd5408?page=2 гляньте, вроде ваш.

spazmalgon
Offline
Зарегистрирован: 22.08.2020

pilnikov пишет:

пока ждете, поищите скеч под ваш дисплейчик

тут http://arduino.ru/forum/apparatnye-voprosy/deshevyi-tft-24-displei-na-spfd5408?page=2 гляньте, вроде ваш.

Понял. Буду искать. Только искать библиотеку или скетч? Я тут лопатил инет и нашёл статейку "Подключение шилда 2.4" TFT LCD " http://microsin.net/programming/avr/24-tft-lcd-quick-start.html В ней фото обратной стороны, точ в точ что и на приобретённом мною "чуде". Только вот указано "Контроллер предположительно SPFD5408" , и продавец указал на сайте что "Контроллер сенсорной панели SPFD5408", но я так понимаю что нужно заливать скетч в ардуино уно и перепроверять, что бы убедиться.

P.S. Нашёл библиотеки на гитхабе "SPFD5408 Library" https://github.com/JoaoLopesF/SPFD5408 "

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Вам не для тача библиотека нужна,, а для контроллера дисплея. Он у вас может быть IllI9341 с восьмибитной шиной

nadim
Offline
Зарегистрирован: 04.11.2017

---

conler
Offline
Зарегистрирован: 29.09.2012

Да чего тут говорить... Саша (pilnikov) прекрасно всё тут отрулил в лучших традициях

 

Tolcty
Offline
Зарегистрирован: 08.07.2019

Господа... а вот такой вопрос возник в процессе обдумывания новой концепции приемника на рабочий стол. Комп в соседней комнате, хочется музыки с компа. Посоветуйте пожалуйста платку bluetooth, чтобы ее можно было встроить в приемник и выбирать источник тумблером или абы еще каким переключателем. Платка с усилителем лучше, или без? Усь собрать не проблема. Понимаю, что не по теме, но где еще так полно и развернуто ответят как не здесь :)

Ну и свисток для компа, наверное. Может он какой особенный должен быть? Расстояние от компа до стола - метра 4 + гипсолитовая стена. 

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Есть вариант дешевле - на компе запустить локальную станцию а в радио просто добавить ее к плэйлисту

https://www.liveinternet.ru/users/5244035/post267762439/

https://maxidrom.net/archives/101

https://siava.ru/forum/knowlegebase/article?k=31  

Tolcty
Offline
Зарегистрирован: 08.07.2019

Спасибо, будем изучать.

Tolcty
Offline
Зарегистрирован: 08.07.2019

Спасибо, будем изучать.

stan5
Offline
Зарегистрирован: 10.10.2019

Tolcty пишет:

Спасибо, будем изучать.


Посмотрите в Ютубе listen2myradio.

spazmalgon
Offline
Зарегистрирован: 22.08.2020

To Pilnikov
Плату Arduino UNO купил. В её разъёмы вставил дисплей. Скачал архив LCD_ID_Reader.zip В Arduino IDE скетч
LCD_ID_Reader.ino, скомпилировал а вот запустив его увидел какие то чёрные белые и всякие чёрточки, но экран был не белый.
После этого скачал SPFD5408-master https://github.com/JoaoLopesF/SPFD5408 Загрузил в Ардуино увидел что завелись тестовые картинки.

conler
Offline
Зарегистрирован: 29.09.2012

Из пары сотен станций от силы десяток в "слушабельном" качестве поток дают в МП3 (подкидывал pcm1794 на "послушать" - "голимые" стримы звучать лучше не стали...). А для ААС "разноцветные" китайские платки 1053 - говно по сути (разводка голимая) и фактическая лотерея в плане "запустится-не запустится", ко всему прочему. Есть тут кто заказывал последние платки у Пильникова?, по цифр. шумам интересно мнение послушать. В этой теме это, видимо, единственный человек с достойными результатами и красивой реализацией девайса. Надеюсь мне пару заводских платок останется купить.

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

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

C https пока глухо. 

Про плату

Это уже наверное релиз десятый. Первые платы разрабатывались как макетные, чтобы было все и в разных вариантах. Потом пришло понимание какого то оптимума в наборе опций. В старших релизах перешел на Wroover, отказался от использования внешнего цап в пользу VS1053.  Схема питания перешла с линейников на импульсный трехканальный преобразователь ЕА3036, как в ТТГО ТМ. Обязательными стали два энкодера, стерео УМЗЧ с дифф входом на 4054, который применяется на эспрессифской музыкальной тестовой плате ЛираТ,  юэсби->ком преобразователь на СР2104, схема управления яркостью на полевике, которая кстати снизила энергопотребление чуть ли не в 4 раза. Так же на всех релизах присутствуют светодиод статуса, кнопка сброс, ик приемник, выключатель питания, гнездо для внешнего источника, разъем микроюэсби. Дисплеи на первых релизах применял от 1.2 до 2.4 с тачем. Потом все свернулось до 1.8 на ST7735, т.к. посчитал его размер оптимальным. Но для крайних релизов наткнулся на ips дисплей 2.0 с разрешением 240×320. Текстовые дисплеи не использовал по причине больших размеров и неоптимального соотношения цена/возможности. В одном из старших релизов попробовал развести ЕСП прямо на плате, но получил слабый сигнал ВиФи. Видимо где-то  накосячил. Самые крайние 2 релиза стал заказывать с частичной сборкой на заводе. В последнем релизе перешел с 0603 на 0402, разделил все земли, перерисовал схему зарядки лития, добавил разъемы jtag и com для платки esp-prog. Периодически ставлю на платки зарядку лития и разъем для микросд. Раньше, когда был дисплей с тачем, можно было залить немецкую ардуиновскую прошивку с красивым интерфейсом. Там иконки и циферки часов, а также говорилка будильника хранились на микросд. Но при всех красявостях прошивка оказалась жутко тормознутой. На счет цифровых шумов - Умзч с диф входом, разделенные земли, возможность подключить минус усилителя как к земле так и к gbuf на выбор. Управление усилителем через пин светодиода статуса. Входы vs жестко посажены на землю. В крайнем релизе повтыкал дополнительных индуктивностей в цепи питания. В своей версии прошивки поменял приоритеты - теперь играет практически без затыков, но интерфейс слегка стал притормаживать, но терпимо. Экран большую часть времени спит  - батареи хватает на 4 дня.

conler
Offline
Зарегистрирован: 29.09.2012

Спасибо, отлично! Осталось оформить "мегапост" с информативными фотками и ценниками. 

Не будьте эгоистом, дайте людям возможность приобрести достойный результат Ваших трудов! :) Люди будут только благодарны.

 

spazmalgon
Offline
Зарегистрирован: 22.08.2020

Добрый всем день. "Танцы с бубном" продолжались несколько дней. В результате, завёлся скетчь из статьи https://hobbytech.com.ua/%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d1%80-%d1%80%d0%... Я так понял что это означает что на моём дисплее 2.4″ установлен контроллер ILI9341 ? Все остальные примеры не заводились.

Что мне делать дальше, что бы подружить КаРадио с этим дисплее (паралельная шина)?

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Завтра попробую глянуть если время будет. 

Catbear
Catbear аватар
Offline
Зарегистрирован: 14.10.2019

To conler: Вы случайно не адепт секты " бескислородной меди"? :-)))) Сложно, наверное, требовать от проекта какого то нереального качества звучания, он бесплатен изначально. Как вы справедливо заметили и качество потока станций не везде одинаково отличное. Если Pilnikov получит ожидаемое от проекта, несомненно купим (если лекарство, конечно не смертельнее, чем болезнь получится по цене). Я думаю, если реализовать все Ваши требования по всевозможным шумам, то вероятно, получится очень дорого и нужно единицам для прослушивания все тех же 10 радиостанций.А так, все все прекрасно понимают по качеству потоков и текущей цене изготовления из существующих цветных китайских модулей (она минимальна). Это в основном и используют на дачах, гаражах и т.д. и т.п. в различных вариациях. Скриншоты экранов посмотрите в форуме, там то шансон, то попса. :-))))

spazmalgon
Offline
Зарегистрирован: 22.08.2020

"Гулял" по просторам интернета и на ресурсе https://terraideas.ru/ нашёл статью "Подключение сенсорного дисплея на ILI9341 (R61520, SPFD5408) к STM32" https://terraideas.ru/article/podklyuchenie-sensornogo-displeya-na-ili93... . Расписано доходчиво. Может кому то пригодится. А я сижу, читаю, обдумываю. Это для меня дремучий лес.

Maksland
Offline
Зарегистрирован: 30.08.2020

тоже жду ... только 0402 это жестоко

Maksland
Offline
Зарегистрирован: 30.08.2020

тоже жду ... только 0402 это жестоко

maleksm
Offline
Зарегистрирован: 19.03.2019

Catbear пишет:
To conler: ...
там то шансон, то попса. :-))))

Так, по большому счёту, кроме этого больше ничего и нет. Не говоря про ФМ-станции.

толстый
Offline
Зарегистрирован: 10.02.2020

- Молодой человек, а где у вас шансон?

Продавец (длинные волосы, косичка, серьга в ухе):

- Вы знаете, у нас из шансона только Шарль Азнавур...

Покупатель подзавис на несколько секунд, хлопая глазами.

Продавец:

- А блатняк у нас во-он там...

 

Мои станции 

{"Name":"Splash Classical","URL":"ais-sa2.cdnstream1.com","File":"/2208_128.mp3?awparams=NoPreroll:true","Port":"80","ovol":"0"}  - классическая музыка

{"Name":"Big R Radio - Blues FM","URL":"107.155.111.234","File":"/","Port":"8770","ovol":"0"} - блюз

{"Name":"1000 HITS Country","URL":"listen.shoutcast.com","File":"/1000hitscountry","Port":"80","ovol":"0"}   - кантри

{"Name":"1 Club 4 Radio","URL":"listen.radionomy.com","File":"/1club4radio","Port":"80","ovol":"0"} - лёгкая, ненавязчивая электронка

Ну а рок и "DRUM AND BASS" это всё разбавляет :)

Catbear
Catbear аватар
Offline
Зарегистрирован: 14.10.2019

толстый пишет:

- Молодой человек, а где у вас шансон?

Продавец (длинные волосы, косичка, серьга в ухе):

- Вы знаете, у нас из шансона только Шарль Азнавур...

Покупатель подзавис на несколько секунд, хлопая глазами.

Продавец:

- А блатняк у нас во-он там...

 

Мои станции 

{"Name":"Splash Classical","URL":"ais-sa2.cdnstream1.com","File":"/2208_128.mp3?awparams=NoPreroll:true","Port":"80","ovol":"0"}  - классическая музыка

{"Name":"Big R Radio - Blues FM","URL":"107.155.111.234","File":"/","Port":"8770","ovol":"0"} - блюз

{"Name":"1000 HITS Country","URL":"listen.shoutcast.com","File":"/1000hitscountry","Port":"80","ovol":"0"}   - кантри

{"Name":"1 Club 4 Radio","URL":"listen.radionomy.com","File":"/1club4radio","Port":"80","ovol":"0"} - лёгкая, ненавязчивая электронка

Ну а рок и "DRUM AND BASS" это всё разбавляет :)


Рад за ваш вкус. Под шансоном у нас, сейчас в России, понимается действительно далеко не Азнавур.
Посыл был таков, что подобная музыка не требует "ухищрений" в части качества звука, и с подавляющем большинством потоков (которые востребованы массой слушателей) Карадио (тем более 32) вполне справляется и в текущем виде.
А так, любому, я думаю, хочется использовать и sd карту и bluetooth, acc потоки и https с крутым интерфейсом и быстродействием. И все это без дополнительных "костылей" и с нереально чистым воспроизведением. Но какая цена вопроса будет и когда это все будет реализовано (и будет ли) одному богу известно.

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

spazmalgon пишет:

Добрый всем день. "Танцы с бубном" продолжались несколько дней. В результате, завёлся скетчь из статьи https://hobbytech.com.ua/%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d1%80-%d1%80%d0%... Я так понял что это означает что на моём дисплее 2.4″ установлен контроллер ILI9341 ? Все остальные примеры не заводились.

Что мне делать дальше, что бы подружить КаРадио с этим дисплее (паралельная шина)?

Т.е. скеч у вас завелся с этой https://github.com/JoaoLopesF/SPFD5408 библиотекой? Покажите, что вам выдает монитор порта. И фото вашего дисплея с работающим скечем.

spazmalgon
Offline
Зарегистрирован: 22.08.2020

pilnikov пишет:

spazmalgon пишет:

Добрый всем день. "Танцы с бубном" продолжались

Что мне делать дальше, что бы подружить КаРадио с этим дисплее (паралельная шина)?

Т.е. скеч у вас завелся с этой https://github.com/JoaoLopesF/SPFD5408 библиотекой? Покажите, что вам выдает монитор порта. И фото вашего дисплея с работающим скечем.

Да, дисплей завёлся с библиотекой SPFD5408. Сейчас сниму монитор порта. Только вот буду пытаться его втиснуть в сообщение.

spazmalgon
Offline
Зарегистрирован: 22.08.2020

Пытаюсь вставить скрин монитора порта. Как его вставить --- УМА НЕ ПРИЛОЖУ. В Ардуино ввёл Монитор порта, текст помечается, только вот не выводится - коприровать, да и на форуме - не пойму как вставить фотку
Вот тот скетч, на котором звёлся дисплей
// IMPORTANT: Adafruit_TFTLCD LIBRARY MUST BE SPECIFICALLY
// CONFIGURED FOR EITHER THE TFT SHIELD OR THE BREAKOUT BOARD.
// SEE RELEVANT COMMENTS IN Adafruit_TFTLCD.h FOR SETUP.

// Modified for SPFD5408 Library by Joao Lopes
// Version 0.9.2 - Rotation for Mega and screen initial

// *** SPFD5408 change -- Begin
#include // Core graphics library
#include // Hardware-specific library
#include
// *** SPFD5408 change -- End

// The control pins for the LCD can be assigned to any digital or
// analog pins...but we'll use the analog pins as this allows us to
// double up the pins with the touch screen (see the TFT paint example).
#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0

#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

// When using the BREAKOUT BOARD only, use these 8 data lines to the LCD:
// For the Arduino Uno, Duemilanove, Diecimila, etc.:
// D0 connects to digital pin 8 (Notice these are
// D1 connects to digital pin 9 NOT in order!)
// D2 connects to digital pin 2
// D3 connects to digital pin 3
// D4 connects to digital pin 4
// D5 connects to digital pin 5
// D6 connects to digital pin 6
// D7 connects to digital pin 7
// For the Arduino Mega, use digital pins 22 through 29
// (on the 2-row header at the end of the board).

// Assign human-readable names to some common 16-bit color values:
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// If using the shield, all control and data lines are fixed, and
// a simpler declaration can optionally be used:
// Adafruit_TFTLCD tft;

// -- Setup

void setup(void) {

Serial.begin(9600);

progmemPrintln(PSTR("TFT LCD test"));

#ifdef USE_ADAFRUIT_SHIELD_PINOUT
progmemPrintln(PSTR("Using Adafruit 2.8\" TFT Arduino Shield Pinout"));
#else
progmemPrintln(PSTR("Using Adafruit 2.8\" TFT Breakout Board Pinout"));
#endif

tft.reset();

// *** SPFD5408 change -- Begin

// Original code commented

// uint16_t identifier = tft.readID();
//
// if(identifier == 0x9325) {
// Serial.println(F("Found ILI9325 LCD driver"));
// } else if(identifier == 0x9328) {
// Serial.println(F("Found ILI9328 LCD driver"));
// } else if(identifier == 0x7575) {
// Serial.println(F("Found HX8347G LCD driver"));
// } else if(identifier == 0x9341) {
// Serial.println(F("Found ILI9341 LCD driver"));
// } else if(identifier == 0x8357) {
// Serial.println(F("Found HX8357D LCD driver"));
// } else {
// Serial.print(F("Unknown LCD driver chip: "));
// Serial.println(identifier, HEX);
// Serial.println(F("If using the Adafruit 2.8\" TFT Arduino shield, the line:"));
// Serial.println(F(" #define USE_ADAFRUIT_SHIELD_PINOUT"));
// Serial.println(F("should appear in the library header (Adafruit_TFT.h)."));
// Serial.println(F("If using the breakout board, it should NOT be #defined!"));
// Serial.println(F("Also if using the breakout, double-check that all wiring"));
// Serial.println(F("matches the tutorial."));
// return;
// }
//
// tft.begin(identifier);

// Code changed to works

tft.begin(0x9341); // SDFP5408

tft.setRotation(0); // Need for the Mega, please changed for your choice or rotation initial

// *** SPFD5408 change -- End

progmemPrintln(PSTR("Benchmark Time (microseconds)"));

progmemPrint(PSTR("Screen fill "));
Serial.println(testFillScreen());
delay(500);

progmemPrint(PSTR("Text "));
Serial.println(testText());
delay(3000);

progmemPrint(PSTR("Lines "));
Serial.println(testLines(CYAN));
delay(500);

progmemPrint(PSTR("Horiz/Vert Lines "));
Serial.println(testFastLines(RED, BLUE));
delay(500);

progmemPrint(PSTR("Rectangles (outline) "));
Serial.println(testRects(GREEN));
delay(500);

progmemPrint(PSTR("Rectangles (filled) "));
Serial.println(testFilledRects(YELLOW, MAGENTA));
delay(500);

progmemPrint(PSTR("Circles (filled) "));
Serial.println(testFilledCircles(10, MAGENTA));

progmemPrint(PSTR("Circles (outline) "));
Serial.println(testCircles(10, WHITE));
delay(500);

progmemPrint(PSTR("Triangles (outline) "));
Serial.println(testTriangles());
delay(500);

progmemPrint(PSTR("Triangles (filled) "));
Serial.println(testFilledTriangles());
delay(500);

progmemPrint(PSTR("Rounded rects (outline) "));
Serial.println(testRoundRects());
delay(500);

progmemPrint(PSTR("Rounded rects (filled) "));
Serial.println(testFilledRoundRects());
delay(500);

progmemPrintln(PSTR("Done!"));
}

void loop(void) {
for(uint8_t rotation=0; rotation<4; rotation++) {
tft.setRotation(rotation);
testText();
delay(2000);
}
}

unsigned long testFillScreen() {
unsigned long start = micros();
tft.fillScreen(BLACK);
tft.fillScreen(RED);
tft.fillScreen(GREEN);
tft.fillScreen(BLUE);
tft.fillScreen(BLACK);
return micros() - start;
}

unsigned long testText() {
tft.fillScreen(BLACK);
unsigned long start = micros();
tft.setCursor(0, 0);
tft.setTextColor(WHITE); tft.setTextSize(1);
tft.println("Hello World!");
tft.setTextColor(YELLOW); tft.setTextSize(2);
tft.println(1234.56);
tft.setTextColor(RED); tft.setTextSize(3);
tft.println(0xDEADBEEF, HEX);
tft.println();
tft.setTextColor(GREEN);
tft.setTextSize(5);
tft.println("Groop");
tft.setTextSize(2);
tft.println("I implore thee,");
tft.setTextSize(1);
tft.println("my foonting turlingdromes.");
tft.println("And hooptiously drangle me");
tft.println("with crinkly bindlewurdles,");
tft.println("Or I will rend thee");
tft.println("in the gobberwarts");
tft.println("with my blurglecruncheon,");
tft.println("see if I don't!");
return micros() - start;
}

unsigned long testLines(uint16_t color) {
unsigned long start, t;
int x1, y1, x2, y2,
w = tft.width(),
h = tft.height();

tft.fillScreen(BLACK);

x1 = y1 = 0;
y2 = h - 1;
start = micros();
for(x2=0; x2 x2 = w - 1;
for(y2=0; y2 t = micros() - start; // fillScreen doesn't count against timing

tft.fillScreen(BLACK);

x1 = w - 1;
y1 = 0;
y2 = h - 1;
start = micros();
for(x2=0; x2 x2 = 0;
for(y2=0; y2 t += micros() - start;

tft.fillScreen(BLACK);

x1 = 0;
y1 = h - 1;
y2 = 0;
start = micros();
for(x2=0; x2 x2 = w - 1;
for(y2=0; y2 t += micros() - start;

tft.fillScreen(BLACK);

x1 = w - 1;
y1 = h - 1;
y2 = 0;
start = micros();
for(x2=0; x2 x2 = 0;
for(y2=0; y2

return micros() - start;
}

unsigned long testFastLines(uint16_t color1, uint16_t color2) {
unsigned long start;
int x, y, w = tft.width(), h = tft.height();

tft.fillScreen(BLACK);
start = micros();
for(y=0; y for(x=0; x

return micros() - start;
}

unsigned long testRects(uint16_t color) {
unsigned long start;
int n, i, i2,
cx = tft.width() / 2,
cy = tft.height() / 2;

tft.fillScreen(BLACK);
n = min(tft.width(), tft.height());
start = micros();
for(i=2; i i2 = i / 2;
tft.drawRect(cx-i2, cy-i2, i, i, color);
}

return micros() - start;
}

unsigned long testFilledRects(uint16_t color1, uint16_t color2) {
unsigned long start, t = 0;
int n, i, i2,
cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;

tft.fillScreen(BLACK);
n = min(tft.width(), tft.height());
for(i=n; i>0; i-=6) {
i2 = i / 2;
start = micros();
tft.fillRect(cx-i2, cy-i2, i, i, color1);
t += micros() - start;
// Outlines are not included in timing results
tft.drawRect(cx-i2, cy-i2, i, i, color2);
}

return t;
}

unsigned long testFilledCircles(uint8_t radius, uint16_t color) {
unsigned long start;
int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2;

tft.fillScreen(BLACK);
start = micros();
for(x=radius; x for(y=radius; y tft.fillCircle(x, y, radius, color);
}
}

return micros() - start;
}

unsigned long testCircles(uint8_t radius, uint16_t color) {
unsigned long start;
int x, y, r2 = radius * 2,
w = tft.width() + radius,
h = tft.height() + radius;

// Screen is not cleared for this one -- this is
// intentional and does not affect the reported time.
start = micros();
for(x=0; x for(y=0; y tft.drawCircle(x, y, radius, color);
}
}

return micros() - start;
}

unsigned long testTriangles() {
unsigned long start;
int n, i, cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;

tft.fillScreen(BLACK);
n = min(cx, cy);
start = micros();
for(i=0; i tft.drawTriangle(
cx , cy - i, // peak
cx - i, cy + i, // bottom left
cx + i, cy + i, // bottom right
tft.color565(0, 0, i));
}

return micros() - start;
}

unsigned long testFilledTriangles() {
unsigned long start, t = 0;
int i, cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;

tft.fillScreen(BLACK);
start = micros();
for(i=min(cx,cy); i>10; i-=5) {
start = micros();
tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
tft.color565(0, i, i));
t += micros() - start;
tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
tft.color565(i, i, 0));
}

return t;
}

unsigned long testRoundRects() {
unsigned long start;
int w, i, i2,
cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;

tft.fillScreen(BLACK);
w = min(tft.width(), tft.height());
start = micros();
for(i=0; i i2 = i / 2;
tft.drawRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(i, 0, 0));
}

return micros() - start;
}

unsigned long testFilledRoundRects() {
unsigned long start;
int i, i2,
cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;

tft.fillScreen(BLACK);
start = micros();
for(i=min(tft.width(), tft.height()); i>20; i-=6) {
i2 = i / 2;
tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0));
}

return micros() - start;
}

// Copy string from flash to serial port
// Source string MUST be inside a PSTR() declaration!
void progmemPrint(const char *str) {
char c;
while(c = pgm_read_byte(str++)) Serial.print(c);
}

// Same as above, with trailing newline
void progmemPrintln(const char *str) {
progmemPrint(str);
Serial.println();
}
А вот как вставить монитор порта из радуино иде - не найду как это сделать

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Текст из монитора порта копируете ctrl+C потом сюда вставляете ctrl+V

spazmalgon
Offline
Зарегистрирован: 22.08.2020

Вот пытаюсь
16:38:13.772 -> TFT LCD test
16:38:13.772 -> Using Adafruit 2.8" TFT Breakout Board Pinout
16:38:14.702 -> Benchmark Time (microseconds)
16:38:14.742 -> Screen fill 1380000
16:38:16.582 -> Text 347636
16:38:20.174 -> Lines 3385172
16:38:35.176 -> Horiz/Vert Lines 144332
16:38:36.056 -> Rectangles (outline) 103892
16:38:36.856 -> Rectangles (filled) 3268528
16:38:40.976 -> Circles (filled) 1199784
16:38:42.416 -> Circles (outline) 1468220
16:38:44.376 -> Triangles (outline) 1073012
16:38:46.176 -> Triangles (filled) 1713176
16:38:49.770 -> Rounded rects (outline) 505856
16:38:51.010 -> Rounded rects (filled) 3790328
16:38:55.530 -> Done!

spazmalgon
Offline
Зарегистрирован: 22.08.2020

Сильно не пинайте - а как вставить фото (работа монитора с загруженным скетчем)?

spazmalgon
Offline
Зарегистрирован: 22.08.2020

Вот ещё один монитор порта (с другим работающим скетчем)

16:58:17.042 -> TFT LCD test
16:58:17.042 -> Using Adafruit 2.8" TFT Breakout Board Pinout
16:58:17.042 -> Found ILI9341 LCD driver
16:58:17.962 -> Screen fill
16:58:20.802 -> Text
16:58:21.402 -> Done!

 

spazmalgon
Offline
Зарегистрирован: 22.08.2020

вот ещё один скетч, который заработал с дисплеем

///////////////
// Sketch: Calibrate - Calibrate TFT SPFD5408 Touch
// Author: Joao Lopes F. - joaolopesf@gmail.com
//
// Versions:
//    - 0.9.0  First beta - July 2015
//    - 0.9.1  Rotation for Mega 
// Comments: 
//    Show the calibration parameters to put in your code
//    Please use a small like the eraser on a pencil for best results
//
//    Code for buttons, based on Adafruit arduin_o_phone example
///////////////

// library SPFD5408 

#include <SPFD5408_Adafruit_GFX.h>    // Core graphics library
#include <SPFD5408_Adafruit_TFTLCD.h> // Hardware-specific library
#include <SPFD5408_TouchScreen.h>     // Touch library

// Calibrates value
#define SENSIBILITY 300
#define MINPRESSURE 10
#define MAXPRESSURE 1000

//These are the pins for the shield!
#define YP A1 
#define XM A2 
#define YM 7  
#define XP 6 

/*
//Macros replaced by variables
#define TS_MINX 150
#define TS_MINY 120
#define TS_MAXX 920
#define TS_MAXY 940
*/
short TS_MINX=150;
short TS_MINY=120;
short TS_MAXX=920;
short TS_MAXY=940;

// Init TouchScreen:

TouchScreen ts = TouchScreen(XP, YP, XM, YM, SENSIBILITY);

// LCD Pin

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4 // Optional : otherwise connect to Arduino's reset pin

// Assign human-readable names to some common 16-bit color values:
#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

// Init LCD

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

// Dimensions

uint16_t width = 0;
uint16_t height = 0;

// Buttons

#define BUTTONS 3
#define BUTTON_CLEAR 0
#define BUTTON_SHOW 1
#define BUTTON_RESET 2

Adafruit_GFX_Button buttons[BUTTONS];

uint16_t buttons_y = 0;

//-- Setup

void setup(void) {

  // Serial por for debug, not works if shield is plugged in arduino
  
//  Serial.begin(9600);

  // Inicialize the controller
  
  tft.reset();
  
  tft.begin(0x9341);

  tft.setRotation(0); // Need for the Mega, please changed for your choice or rotation initial

  width = tft.width() - 1;
  height = tft.height() - 1;

  // Debug
  
//  Serial.println(F("TFT LCD test"));
//  Serial.print("TFT size is "); 
//  Serial.print(tft.width()); 
//  Serial.print("x"); 
//  Serial.println(tft.height());

  // UI

  initializeButtons();
  
  // Border

  drawBorder();
  
  // Initial screen
  
  tft.setCursor (55, 50);
  tft.setTextSize (3);
  tft.setTextColor(RED);
  tft.println("SPFD5408");
  tft.setCursor (65, 85);
  tft.println("Library");
  tft.setCursor (55, 150);
  tft.setTextSize (2);
  tft.setTextColor(BLACK);
  tft.println("Calibration");

  tft.setCursor (80, 250);
  tft.setTextSize (1);
  tft.setTextColor(BLACK);
  tft.println("Touch to proceed");

  // Wait touch

  waitOneTouch();

  // Calibrate it
  
  calibrate_TS();

  // Wait touch

  waitOneTouch();

  // Calibration

  showCalibration();

}

// -- Loop

void loop()
{
  // Test of calibration
  
  TSPoint p;

  // Wait a touch
  
  digitalWrite(13, HIGH);
  
  p = waitOneTouch();
  
  digitalWrite(13, LOW);

  // Map of values
  
//  p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());
//  p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());

  p.x = mapXValue(p);
  p.y = mapYValue(p);
  
  // Draw a point
  
  tft.fillCircle(p.x, p.y, 3, BLUE);
  
  // Show touch screen point (TSPOINT)
  
  showTouched(p);
  
  // Buttons

  // Go thru all the buttons, checking if they were pressed
  
  for (uint8_t b=0; b<BUTTONS; b++) {
    
    if (buttons[b].contains(p.x, p.y)) {

        // Action

        switch  (b) {

          case BUTTON_CLEAR:

              // Clear

              showCalibration();

              break;
              
          case BUTTON_SHOW:

              // Clear

              showResults();

              tft.println();
              tft.println("Touch to proceed");

              waitOneTouch();

              showCalibration();
              
              break;
              
          case BUTTON_RESET:

              // New calibration

              calibrate_TS();

              waitOneTouch();

              showCalibration();

              break;
        }
    }
  }

}

// Calibration of Touch Screen (resistive)

void calibrate_TS(void) {

  // Based in code posted in https://forum.arduino.cc/index.php?topic=223769.15
  
  TSPoint p1, p2;
  int16_t temp;
  int32_t tempL;
  
  tft.fillScreen(BLACK);
  
  tft.fillCircle(4,4,4,WHITE); //show the first point
  tft.setCursor(5, 30); 
  tft.setTextColor(WHITE); 
  tft.setTextSize(1);
  tft.println("Please touch the dot");

  uint16_t limit = 40;
  
  do {
  
    p1 = waitOneTouch();

  } while (!(mapXValue(p1) < limit && mapYValue(p1) < limit));
  
  tft.fillScreen(BLACK);

  tft.fillCircle(234,314,4,WHITE); //show the 2nd point
  tft.setCursor(50, 280);
  tft.println("Please touch the other dot");
  delay (500); // debunce

  do {
  
    p2 = waitOneTouch();
  
  } while (!(mapXValue(p2) > (width - limit) && mapYValue(p2) > (height - limit)));
  
  tft.fillScreen(BLACK);
  
  delay (300); 
  
  temp=p2.x-p1.x; // Calculate the new coefficients, get X difference
  tempL=((long)temp*1024)/(tft.width()-20);
  TS_MINX=p1.x-( (tempL*10)>>10);// 10 pixels du bord
  TS_MAXX=p1.x+( (tempL*tft.width())>>10);// 220 pixels entre points
  temp=p2.y-p1.y; // ¨get Y difference
  tempL=((long)temp*1024)/(tft.height()-20);
  TS_MINY=p1.y-( (tempL*10)>>10);// 10 pixels du bord
  TS_MAXY=TS_MINY+( (tempL*tft.height())>>10);
  
  // Show results

  showResults();
  
//  p1.x = map(p1.x, TS_MAXX,TS_MINX, tft.width(), 0);
//  p1.y = map(p1.y, TS_MAXY,TS_MINY, tft.height(), 0);
//  p2.x = map(p2.x, TS_MAXX,TS_MINX, tft.width(), 0);
//  p2.y = map(p2.y, TS_MAXY,TS_MINY, tft.height(), 0);

    p1.x = mapXValue(p1);
    p1.y = mapYValue(p1);
    p2.x = mapXValue(p2);
    p2.y = mapYValue(p2);

  tft.println();
  tft.println("Last touched points: ");
  tft.print("Pt 1: ");tft.print(p1.x);tft.print(" : ");tft.println(p1.y);
  tft.print("Pt 2: ");tft.print(p2.x);tft.print(" : ");tft.println(p2.y);

  tft.println();

  // Wait a touch
  
  tft.println("Touch to proceed");

  waitOneTouch();
}
// wait 1 touch to return the point 

TSPoint waitOneTouch() {
  
  TSPoint p;
  
  do {
    p= ts.getPoint(); 
  
    pinMode(XM, OUTPUT); //Pins configures again for TFT control
    pinMode(YP, OUTPUT);
  
  } while((p.z < MINPRESSURE )|| (p.z > MAXPRESSURE));
  
  return p;
}

// Draw a border

void drawBorder () {

  uint16_t width = tft.width() - 1;
  uint16_t height = tft.height() - 1;
  uint8_t border = 10;

  tft.fillScreen(RED);
  tft.fillRect(border, border, (width - border * 2), (height - border * 2), WHITE);
  
}

// Show a screen of calibration

void showCalibration() {
  
  // Clear
  
  tft.fillScreen(BLACK);
  tft.setTextSize (1);

  // Header
  
  tft.fillRect(0, 0, width, 10, RED);

  tft.setCursor (40, 0);
  tft.setTextColor(WHITE);
  tft.println("*** Test of calibration ***");

  // Footer

  TSPoint p; // Only for show initial values
  p.x=0;
  p.y=0;
  p.z=0;
  
  showTouched(p);

  // Buttons

  for (uint8_t i=0; i<3; i++) {
      buttons[i].drawButton();
  }
  
}

// Show the coordinates     

void showTouched(TSPoint p) {

  uint8_t w = 40; // Width
  uint8_t h = 10; // Heigth
  uint8_t x = (width - (w*2)); // X
  uint8_t y = 11; // Y
  
  tft.fillRect(x, y, w*2, h, WHITE); // For cleanup

  tft.drawRect(x, y, w, h, RED); // For X
  tft.drawRect(x+w+2, y, w*2, h, RED); // For Y

  tft.setTextColor(BLACK);
  tft.setCursor(x+2, y + 1);
  tft.print("X: ");
  showValue(p.x);
  
  tft.setCursor(x+2+w+2, y + 1);
  tft.print("Y: ");
  showValue(p.y);

}

// Show a value of TSPoint

void showValue (uint16_t value) {

  if (value < 10)
    tft.print("00");
  if (value < 100)
    tft.print("0");
    
  tft.print(value);
  
}

// Show results of calibration

void showResults() {

  tft.fillScreen(BLACK);
  
  // Header
  
  tft.fillRect(0, 0, width, 10, RED);

  tft.setCursor (40, 0);
  tft.setTextColor(WHITE);
  tft.println("*** Results of calibration ***");

  // Results
  
  tft.setCursor(5, 30);
  tft.setTextSize(2);
  tft.println("After calibration: ");
  tft.print("TS_MINX= ");tft.println(TS_MINX);
  tft.print("TS_MINY= ");tft.println(TS_MINY);
  tft.println();
  tft.print("TS_MAXX= ");tft.println(TS_MAXX);
  tft.print("TS_MAXY= ");tft.println(TS_MAXY);

}

// Initialize buttons

void initializeButtons() {

  uint16_t x = 40;
  uint16_t y = height - 20;
  uint16_t w = 75;
  uint16_t h = 20;
  
  uint8_t spacing_x = 5;
  
  uint8_t textSize = 1;

  char buttonlabels[3][20] = {"Clear", "Show", "Recalib."};
  uint16_t buttoncolors[15] = {RED, BLUE, RED};

  for (uint8_t b=0; b<3; b++) {
    buttons[b].initButton(&tft,                           // TFT object
                  x+b*(w+spacing_x),  y,                  // x, y,
                  w, h, WHITE, buttoncolors[b], WHITE,    // w, h, outline, fill, 
                  buttonlabels[b], textSize);             // text
  }

  // Save the y position to avoid draws
  
  buttons_y = y;
  
}

// Map the coordinate X
  
uint16_t mapXValue(TSPoint p) {

  uint16_t x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());

  //Correct offset of touch. Manual calibration
  //x+=1;
  
  return x;

}

// Map the coordinate Y

uint16_t mapYValue(TSPoint p) {

  uint16_t y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());

  //Correct offset of touch. Manual calibration
  //y-=2;

  return y;
}

 Ещё один скетч, который зарадотал с дисплеем

///////////////
// Sketch: Grid TFT
// Author: Joao Lopes F. - joaolopesf@gmail.com
// library SPFD5408

/// Grid for help in design of screens 

#include <SPFD5408_Adafruit_GFX.h>    // Core graphics library
#include <SPFD5408_Adafruit_TFTLCD.h> // Hardware-specific library

// LCD Pin

#define LCD_CS A3 // CS
#define LCD_CD A2 // RS
#define LCD_WR A1 // WR
#define LCD_RD A0 // RD
#define LCD_RESET A4 // Optional : otherwise connect to Arduino's reset pin

// Assign human-readable names to some common 16-bit color values:
#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

// Init LCD

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

//-- Setup

void setup(void) {

  // Inicialize the controller

  tft.reset();

  tft.begin(0x9341);

  tft.setRotation(0); // Need for the Mega, please changed for your choice or rotation initial

  // Screen white

  tft.fillScreen(WHITE);
  
 // Grid

  drawGrid();

  // Texts

  tft.setCursor (0, 20);

  tft.setTextColor(RED);
  for (uint8_t size = 1; size <= 5; size++) {
    tft.setTextSize (size);
    tft.setCursor (0, 20 * size * 2);
    tft.print(size);
    tft.print("-");
    tft.println("ABC123");
  }

 }

// -- Loop

void loop()
{
}

// Draw a grid

void drawGrid () {

  for(uint16_t y = 0; y <= 340; y+=5) 
    tft.drawFastHLine(0, y, 240, BLACK);
  for(uint16_t x = 0; x <= 240; x+=5) 
    tft.drawFastVLine(x, 0, 340, BLACK);

  tft.setTextColor(BLACK);
  tft.setTextSize (1);
  
  for(uint16_t y = 0; y <= 340; y+=25) { 
    tft.setCursor (200, y);
    tft.print(y);
  }
}

 

Catbear
Catbear аватар
Offline
Зарегистрирован: 14.10.2019

To Pilnikov: Несколько не в тему, интересно, а вы поняли в чем причина падения сигнала wi-fi, если просто использовать голый чип esp32 на плате? Странно, вы ведь используете в Ваших проектах внешнюю антенну. Да и производители, типа Sonoff, уже давно перешли к напайке чипа esp непосредственно на плату. ( Хотя там esp попримитивней, и, может это несопоставимы пример).