Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 2 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 11 по 20 из 50

Тема: Проект выходного дня: Интернет-радио на ESP32+VS1053+ILI9341

  1. #11
    Аватар для IG_58
    Регистрация
    27.10.2012
    Адрес
    Германия
    Сообщений
    13,014
    Записей в дневнике
    18
    aleksandr130, через USB порт на самой платке. Второй порт не надо использовать.
    Игорь


  2. #12
    Аватар для Egen_M
    Регистрация
    23.12.2019
    Адрес
    Московская область
    Сообщений
    18
    Здравствуйте Игорь! На конец то меня активировали на сайте, и теперь мы можем общаться на Вашей странице. По Вашей рекомендации я исправил ошибки в программе, теперь управлять радио стало удобнее. Помните я раньше писал Вам, что хочу русифицировать Edzelf ESP32 Rdadio? Так вот, я сделал это. Оказалось это совсем не трудно. Достаточно было в библиотеку Adafruit-GFX добавить русские шрифты, и прописать их в программе. Ещё я добавил на экран вывод названия канала из preset. Экран стал белее информативен. Информацию для вывода на экран я беру из функции обработки действий энкодера void chk_enc() данные находятся в переменной tmp
    chomp ( tmp ) ; n_presset = tmp; //добавил переменную для вывода на дисплей
    Данные о выбранном preset, в этой переменной, появляются только тогда, когда выбираешь станции энкодером. Хочу у Вас спросить, может Вы знаете: "В какой переменной хранится информация о выбранном канале (preset), при выборе станции кнопками управления, и выборе станции из Web страницы?" Что то я найти их не могу. Спасибо!
    Нажмите на изображение для увеличения. 

Название:	P1050612.JPG 
Просмотров:	470 
Размер:	363.0 Кб 
ID:	327397Нажмите на изображение для увеличения. 

Название:	P1050613.JPG 
Просмотров:	460 
Размер:	356.1 Кб 
ID:	327398

    P.S. Да, забыл написать дисплей у меня 4" 320х480 st7796s/ILI9488 SPI
    Последний раз редактировалось Egen_M; 04.01.2020 в 23:26.

  3. Спасибо от IG_58

  4. #13
    Аватар для IG_58
    Регистрация
    27.10.2012
    Адрес
    Германия
    Сообщений
    13,014
    Записей в дневнике
    18
    Здравствуйте, Евгений! рад, что у Вас всё так хорошо получилось.
    К сожалению, материалы проекта остались в другом компьютере, который сейчас недоступен. Когда доберусь до него, попробую найти.
    Игорь

  5. #14
    Классное радио! Вопрос делетанта а можно ли с помощью данного приемника слушать радиолюбителей, к примеру на этом сайте:http://websdr.ewi.utwente.nl:8901 или это технически разные вещи? Извиняюсь за возможно глупый вопрос.

  6. #15
    Аватар для IG_58
    Регистрация
    27.10.2012
    Адрес
    Германия
    Сообщений
    13,014
    Записей в дневнике
    18
    Николай, это технически разные вещи. Однако, было бы интересно на ESP32 + VS1053 реализовать такое SDR-Radio
    Игорь

  7. #16
    Аватар для IG_58
    Регистрация
    27.10.2012
    Адрес
    Германия
    Сообщений
    13,014
    Записей в дневнике
    18
    Цитата Сообщение от Egen_M Посмотреть сообщение
    В какой переменной хранится информация о выбранном канале (preset)
    Вроде бы так:
    - Актуальный пресет: currentpreset
    - Новый выбранный пресет: newpreset
    - Функция соединения с новым сервером для выбранного newpreset: bool connecttohost()
    Она вызывается в двух местах - в void mp3loop() и в void handlebyte_ch ( uint8_t b )
    Игорь

  8. #17
    Аватар для Egen_M
    Регистрация
    23.12.2019
    Адрес
    Московская область
    Сообщений
    18
    Здравствуйте Игорь! Вы просили рассказать, как я подключил русский шрифт к радио. Так вот, это очень просто оказалось. По классической схеме подключения шрифтов, в библиотеку 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.

  9. #18
    Аватар для Egen_M
    Регистрация
    23.12.2019
    Адрес
    Московская область
    Сообщений
    18
    Цитата Сообщение от IG_58 Посмотреть сообщение
    Вроде бы так:
    - Актуальный пресет: currentpreset
    - Новый выбранный пресет: newpreset
    - Функция соединения с новым сервером для выбранного newpreset: bool connecttohost()
    Она вызывается в двух местах - в void mp3loop() и в void handlebyte_ch ( uint8_t b )
    Проверил я эти переменные, они действительно содержат актуальную информацию о пресете, но только его номер, а вот как он туда попадает, и на каком этапе отсекается текстовая строка, надо искать.
    Я нашёл один из вариантов, но там данные появляются только после выбора станции на энкодере.

    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 );
    }
    //-----------------------------------------------

  10. #19
    Аватар для IG_58
    Регистрация
    27.10.2012
    Адрес
    Германия
    Сообщений
    13,014
    Записей в дневнике
    18
    Спасибо, нужно будет выбрать время и подключить русский язык

    Цитата Сообщение от Egen_M Посмотреть сообщение
    как он туда попадает, и на каком этапе отсекается текстовая строка, надо искать.
    Думаю, надо разбираться, что делается в void mp3loop() и в void handlebyte_ch ( uint8_t b ). К сожалению, пока времени не хватает взяться за это по-настоящему.
    Игорь


  11. #20
    Аватар для Egen_M
    Регистрация
    23.12.2019
    Адрес
    Московская область
    Сообщений
    18
    Цитата Сообщение от IG_58 Посмотреть сообщение
    Думаю, надо разбираться, что делается в void mp3loop() и в void handlebyte_ch ( uint8_t b ). К сожалению, пока времени не хватает взяться за это по-настоящему.
    Всё, я разобрался. Точнее решил сам написать кусок скетча, а не искать готовое решение.
    В общем я нашёл в скетче функцию 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.

Страница 2 из 5 ПерваяПервая 12345 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Интернет-радиоприемник на Espressif ESP32
    от djon_bogd в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 250
    Последнее сообщение: 04.03.2021, 11:21
  2. Интернет-радио в автомобиле и не только
    от R2F-010-KA в разделе Для начинающих
    Ответов: 22
    Последнее сообщение: 15.03.2018, 16:28
  3. Шкала настройки интернет-радио
    от Слесарь в разделе Темы не вошедшие в другие разделы форума
    Ответов: 16
    Последнее сообщение: 19.08.2014, 19:29
  4. интернет-радио
    от ru9tr в разделе Темы не вошедшие в другие разделы форума
    Ответов: 37
    Последнее сообщение: 11.03.2011, 04:22
  5. Ответов: 70
    Последнее сообщение: 07.04.2007, 00:23

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •