Sari la conținut
ELFORUM - Forumul electronistilor

Yoradio - web radio sau radio internet


cristi7521

Postări Recomandate

  • 2 săptămâni mai târziu...
  • Răspunsuri 130
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • fratello

    36

  • val

    30

  • modoran

    26

  • Stefan

    16

Top autori în acest subiect

Imagini postate

Daca este cineva interesat de problema cu afisarea diacriticelor in yoRadio ( ă â î ș ț Ă Â Î Ș Ț ) , adica transformarea lor in " a i s t A I S T" ca sa fie afisate corect fara modificarea fonturilor sa posteze aici si va pot spune ce sa modificati in yoRadio\src\displays\tools\utf8RusGFX.h

Link spre comentariu

La mine merge bine cu placa NodeMCU ESP-32S, un display de 2.4" cu ST7789 si deocamdata cu un singur MAX98357A.

https://imgur.com/a/alSh1fq

Pe partea audio o sa incerc cu ceva mai puternic, cu dac i2s separat si un amp diferential cand imi ajung din China.

Dupa ce m-am chinuit cu vreo doua placi rosii de VS1053b, care nu prea vroiau sa porneasca de nici un fel... o fi sau no fi ele originale, sau numai eu n-am reusit sa le fac sa functioneze cu acest proiect.

Link spre comentariu
  • 2 săptămâni mai târziu...
La 19.03.2024 la 18:45, modoran a spus:

Daca este cineva interesat de problema cu afisarea diacriticelor in yoRadio ( ă â î ș ț Ă Â Î Ș Ț ) , adica transformarea lor in " a i s t A I S T" ca sa fie afisate corect fara modificarea fonturilor sa posteze aici si va pot spune ce sa modificati in yoRadio\src\displays\tools\utf8RusGFX.h

Un sfat legat de nivelul de ieșire audio, se poate modifica din src?

In cazul modulelor simple cu PAM8403 (2 x 3W) trebuie adăugat la intrare atenuare rezistivă. 

De asemenea, am câteva ci TDA1387 ( dac i2s) și aș vrea să le folosesc dar nivelul audio pe ieșire este foarte mic.

Link spre comentariu

Da, nivelul se iesire se poate regla din soft.   In mod default are 256 trepte, dar poti folosi mai putine daca vrei  volum maxim mai mic   ( se poate modifica prin soft sa nu treaca de o limita maxima care o vrei tu )    Din pacate, daca nivelul este deja prea mic nu vad alta solutie decat sa folosesti amplificare externa.

 

 

Prin pam8403 te referi la DAC-ul integrat, fara codec pe i2s ?  Eu nu m-am complicat cu el.
 

Link spre comentariu

PAM8403 este amplificator audio analogic 2x3 w pe care l-am folosit cu modul i2s PCM5102 sau UDA1334.

Modulul Max98357(dac + amplificator mono de 3 W) este in regula întrucât  se poate controla câștigul prin pin dedicat.

Editat de val
Link spre comentariu
  • 2 luni mai târziu...
La 19.03.2024 la 18:45, modoran a spus:

Daca este cineva interesat de problema cu afisarea diacriticelor in yoRadio ( ă â î ș ț Ă Â Î Ș Ț ) , adica transformarea lor in " a i s t A I S T" ca sa fie afisate corect fara modificarea fonturilor sa posteze aici si va pot spune ce sa modificati in yoRadio\src\displays\tools\utf8RusGFX.h

Sunt interesat. Care ar fi modificarile respective?

 

Link spre comentariu

Nu o sa dau direct fisierul salvat, ci un exemplu de sine statator, sa poata fi testat de oricine, ar trebui sa mearga pe orice platforma.

 

Adaptarea in yoradio e treaba de copy - paste, dar necesita si putina gandire pe langa ( putina ).

 

Codul face asa:   

- sterge caracterele Unicode '❤️'  si '❌', in locul lor apare un spatiu gol suplimentar

- inlocuieste diacriticele cu analogul lor latin, atat uppercae, cat si lowercase ( yoradio afiseaza toate alea in uppercase, se poate modifica, dar din alta parte, am uitat exact in ce fisier )

 

#include <iostream>
#include <cstring>
#include <iomanip>


#define BUFLEN  260

size_t strlcpy(char *dst, const char *src, size_t siz)
{
    char *d = dst;
    const char *s = src;
    size_t n = siz;
    /* Copy as many bytes as will fit */
    if (n != 0)
    {
        while (--n != 0)
        {
            if ((*d++ = *s++) == '\0')
                break;
        }
    }
    /* Not enough room in dst, add NUL and traverse rest of src */
    if (n == 0)
    {
        if (siz != 0)
            *d = '\0';		/* NUL-terminate dst */
        while (*s++)
            ;
    }
    return(s - src - 1);	/* count does not include NUL */
}



int main()
{


    char strn[300] = { 0 } ;
    strlcpy ( strn, "îăâÎÂĂșțȘȚabc❌❤️daaaaaaaaa", BUFLEN);

    int index = 0;
    static char newStr[BUFLEN];
    newStr[0] = '\0';
    bool uppercase = false;

    // ă  0xC4 0x83
    // Ă  0xC4 0x82

    // â  0xC3 0xA2
    // Â  0xC3 0x82

    // î  0xC3 0xAE
    // Î  0xC3 0x8E

    // ș  0xC8 0x99
    // Ș  0xC8 0x98

    // ț  0xC8 0x9B
    // Ț  0xC8 0x9A

    // ❤️ 0xE2 0x9D 0xA4 0xEF 0xB8 0x8F
    // ❌ 0xE2 0x9D 0x8C
    // 🎤 0xF0 0x9F 0x8E 0xA4   // not used yet

    while ( strn[index] )
    {

        if (strlen(newStr) > BUFLEN - 2) break;

        // debug check, optional
        std::cout << std::dec << index << " = "  <<  std::setw (2) << std::hex << "0x" << (int)(unsigned char)strn[index] << std::endl;

        if ((int)(unsigned char)strn[index] >= 0xC3)
        {
            switch ( (int)(unsigned char)strn[index])
            {
            case 0xC3:
                switch ((int)(unsigned char)strn[index + 1])
                {
                case 0xA2:
                    strcat ( newStr, uppercase ?  "A" : "a");
                    index++;
                    break;
                case 0x82:
                    strcat ( newStr, "A");
                    index++;
                    break;
                case 0xAE:
                    strcat ( newStr, uppercase ?  "I" : "i");
                    index++;
                    break;
                case 0x8E:
                    strcat ( newStr, "I");
                    index++;
                    break;
                }

            case 0xC4:
                switch ( (int)(unsigned char)strn[index + 1])
                {
                case 0x83:
                    strcat ( newStr, uppercase ?  "A" : "a");
                    index++;
                    break;
                case 0x82:
                    strcat ( newStr, "A");
                    index++;
                    break;
                }

            case 0xC8:
                switch ( (int)(unsigned char)strn[index + 1])
                {
                case 0x99:
                    strcat ( newStr, uppercase ?  "S" : "s");
                    index++;
                    break;
                case 0x98:
                    strcat ( newStr, "S");
                    index++;
                    break;
                case 0x9B:
                    strcat ( newStr, uppercase ?  "T" : "t");
                    index++;
                    break;
                case 0x9A:
                    strcat ( newStr, "T");
                    index++;
                    break;
                }

            case 0xE2:
                switch ( (int)(unsigned char)strn[index + 1])
                {
                case 0x9D:

                    if ( strlen ( strn ) - index >= 2)    // boundary check
                    {
                        if ( (int)(unsigned char)strn[index + 2] == 0x8C ) // ❌ 0xE2 0x9D 0x8C
                        {
                            strcat ( newStr, " ");
                            index += 2;
                            break;
                        }
                    }
                    if ( strlen ( strn ) - index >= 5)    // boundary check
                    {

                        // ❤️ 0xE2 0x9D 0xA4 0xEF 0xB8 0x8F
                        if ( (int)(unsigned char)strn[index + 2] == 0xA4 &&
                                (int)(unsigned char)strn[index + 3] == 0xEF &&
                                (int)(unsigned char)strn[index + 4] == 0xB8 &&
                                (int)(unsigned char)strn[index + 5] == 0x8F
                           )
                        {

                            strcat ( newStr, " ");
                            index += 5;
                            break;
                        }
                    }

                    break;
                }


            }
        }
        else
        {
            char Temp[2] = {(char) strn[index], 0 } ;
            strcat(newStr, Temp);
        }

        index++;
    }

    // debug, optional
    std::cout << std::endl << "strn ( input string ): " << strn << std::endl;


    std::cout << "c string result: " << newStr << std::endl;


    return 0;
}

 

Editat de modoran
Link spre comentariu
  • 1 lună mai târziu...
  • 3 săptămâni mai târziu...
La 19.03.2024 la 18:45, modoran a spus:

Daca este cineva interesat de problema cu afisarea diacriticelor in yoRadio ( ă â î ș ț Ă Â Î Ș Ț ) , adica transformarea lor in " a i s t A I S T" ca sa fie afisate corect fara modificarea fonturilor sa posteze aici si va pot spune ce sa modificati in yoRadio\src\displays\tools\utf8RusGFX.h

Buna! Ma intereseaza modificarea pentru afisarea diacriticelor din limba romana.

Am incercat sa traduc o versiune a yoRadio in limba romana, interfata web si afisajul pe ecran etc.. (eu am testat pe un display ILI9488 de 4 inchi, dar se poate adapta la orice display).

 

Momentan singurul lucru care mai lispeste din varianta in limba romana, este afisarea diacriticelor romanesti.

Traducerea o puteti descarca pentru teste de aici: https://github.com/DaradiciLevente/yoRadio-mods

 

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări