aleksandr130, через USB порт на самой платке. Второй порт не надо использовать.
aleksandr130, через USB порт на самой платке. Второй порт не надо использовать.
Здравствуйте Игорь! На конец то меня активировали на сайте, и теперь мы можем общаться на Вашей странице. По Вашей рекомендации я исправил ошибки в программе, теперь управлять радио стало удобнее. Помните я раньше писал Вам, что хочу русифицировать Edzelf ESP32 Rdadio? Так вот, я сделал это. Оказалось это совсем не трудно. Достаточно было в библиотеку Adafruit-GFX добавить русские шрифты, и прописать их в программе. Ещё я добавил на экран вывод названия канала из preset. Экран стал белее информативен. Информацию для вывода на экран я беру из функции обработки действий энкодера void chk_enc() данные находятся в переменной tmp
chomp ( tmp ) ; n_presset = tmp; //добавил переменную для вывода на дисплей
Данные о выбранном preset, в этой переменной, появляются только тогда, когда выбираешь станции энкодером. Хочу у Вас спросить, может Вы знаете: "В какой переменной хранится информация о выбранном канале (preset), при выборе станции кнопками управления, и выборе станции из Web страницы?" Что то я найти их не могу. Спасибо!
P.S. Да, забыл написать дисплей у меня 4" 320х480 st7796s/ILI9488 SPI
Последний раз редактировалось Egen_M; 04.01.2020 в 23:26.
Спасибо от IG_58
Здравствуйте, Евгений! рад, что у Вас всё так хорошо получилось.
К сожалению, материалы проекта остались в другом компьютере, который сейчас недоступен. Когда доберусь до него, попробую найти.
Классное радио! Вопрос делетанта а можно ли с помощью данного приемника слушать радиолюбителей, к примеру на этом сайте:http://websdr.ewi.utwente.nl:8901 или это технически разные вещи? Извиняюсь за возможно глупый вопрос.
Николай, это технически разные вещи. Однако, было бы интересно на ESP32 + VS1053 реализовать такое SDR-Radio
Здравствуйте Игорь! Вы просили рассказать, как я подключил русский шрифт к радио. Так вот, это очень просто оказалось. По классической схеме подключения шрифтов, в библиотеку Adafruit-GFX нужно добавить папку с русскими шрифтами FontsRus. Качал отсюда https://github.com/immortalserg/AdafruitGFXRusFonts Далее добавляем в начале скетча любой из скачанных шрифтов, я добавил вот этот #include <FontsRus/FreeSansBoldOblique1 0.h> , а затем в программе его активируем. В разделе
//******************** ******************** ******************** ****************
// S E T U P *
//******************** ******************** ******************** ****************
// Setup for the program. *
//******************** ******************** ******************** ****************
void setup()
.
.
.
dbgprint ( "Start display" ) ;
if ( dsp_begin() ) // инициализация дисплея
{
tft->setFont(&FreeSansBo ldOblique10pt8b); // выбор шрифта
.
.
Обратите внимание, что в файлах со шрифтами, в их описаниях, присутствует приписка «pt8b», а в названии файла её нет!
Так же в скетче необходимо закоментировать строку //utf8ascii ( buf ) ; в функции
void displayinfo ( uint16_t inx )
{
.
.
// utf8ascii ( buf ) ;
.
.
После этого появится русский текст, там, где он должен быть. Естественно текст в комментариях нужно предварительно заменить на русский, например, здесь:
tft->print ( "Загрузка..." "\n" "Версия:" ) ; и т.д.
Правда, некоторые русскоязычные станции выводят текст в непонятной кодировке, и он из-за этого не выводится на дисплей. Их мало, но они есть. Наверняка это тоже можно побороть, но я пока не знаю как.
К стати величина букв, теперь регулируется выбором файла, со шрифтом нужного размера, и строки //dsp_setTextSize ( 1 ) ;// Character font Size можно закоментировать. Как то так!
На счёт пресетов спасибо, сейчас попробую разобраться.
Последний раз редактировалось Egen_M; 05.01.2020 в 14:53.
Проверил я эти переменные, они действительно содержат актуальную информацию о пресете, но только его номер, а вот как он туда попадает, и на каком этапе отсекается текстовая строка, надо искать.
Я нашёл один из вариантов, но там данные появляются только после выбора станции на энкодере.
String n_presset ; // Я добавил переменную
//******************** ******************** ******************** ******************** ******************
// C H K _ E N C *
//******************** ******************** ******************** ******************** ******************
// Посмотрите, активирован ли поворотный датчик, и выполните его функции. *
//******************** ******************** ******************** ******************** ******************
void chk_enc()
{
.
.
chomp ( tmp ) ;
n_presset = tmp;
tftset ( 3, tmp ) ; // Set screen segment bottom part
break ;
.
.
Информацию беру из переменной tmp; вывожу ее на дисплей в разделе:
//******************** ******************** ******************** ******************** ******************
// D I S P L A Y I N F O *
//******************** ******************** ******************** ******************** ******************
// Show a string on the LCD at a specified y-position (0..2) in a specified color. *
// The parameter is the index in tftdata[]. *
//******************** ******************** ******************** ******************** ******************
void displayinfo ( uint16_t inx )
{
.
.
len = p->str.length() ; // Требуемая длина буфера
if ( len++ ) // Проверьте длину строки, установите длину буфера
{
char buf [ len ] ; // Нужно немного буферного пространства
p->str.toCharArray ( buf, len ) ; // Сделать локальную копию строки
// utf8ascii ( buf ) ; // Конвертировать UTF8
dsp_setTextColor ( p->color ); // Установите требуемый цвет
dsp_setCursor ( 0, p->y + 17 ); // Приготовьтесь показать информацию
dsp_println ( buf ) ; // Показать строку
}
//--------------------------------------- проба
if ( inx == 2 )
{
dsp_fillRect ( 0, 193, width, p->height, BLACK ) ; // очистить экран
dsp_fillRect(0, 193, width, 1, GREEN); // показать разделитель над текстом
dsp_setTextColor ( GREEN ) ;
dsp_setCursor ( 0, 210 );
dsp_println ( n_presset );
}
//-----------------------------------------------
Всё, я разобрался. Точнее решил сам написать кусок скетча, а не искать готовое решение.
В общем я нашёл в скетче функцию readhostfrompref();, которая выводит строку с текущей информацией, по номеру пресета (currentpreset). Но в этой строке содержатся все данные: и адрес, и название, и номер порта и т.д. Поэтому пришлось добавить функию вычленения нужной информации. Всё просто. теперь это выглядит так:
//--------------------------------------- проба
if ( inx == 2 )
{
dsp_fillRect ( 0, 193, width, p->height, BLACK ) ; // очистить экран
dsp_fillRect(0, 193, width, 1, GREEN); // показать разделитель над текстом
dsp_setTextColor ( GREEN ) ;
dsp_setCursor ( 0, 210 );
String n_presset = readhostfrompref(cur rentpreset);
uint8_t n_simvola = n_presset.indexOf("# ");
dsp_println (n_presset.substring (n_simvola + 2)); // +2 это чтобы символ '#' с пробелом не попадал на экран
}
//-----------------------------------------------
Как то так!
P.S. К стати в переменной hostwoext находится адрес сайта текущей радиостанции. Тоже можно вывести на экран.
Последний раз редактировалось Egen_M; 05.01.2020 в 19:56.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)