Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2015:audio-visual-out

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
2015:audio-visual-out [2016/01/17 21:38]
Daniel Kresta vytvořeno
2015:audio-visual-out [2016/01/17 23:12] (aktuální)
Daniel Kresta [Praktická ukázka]
Řádek 57: Řádek 57:
 } }
 </​code>​ </​code>​
 +Tato funkce je volána při inicializaci všech zařízení (mimo jiné i LCD pomocí MX_LTDC_Init() ) v hlavním kódu main.c.
  
 Veškerá obsluha audio device by měla být vytvořena v dalším vygenerovaném souboru usbd_audio_if.c,​ který obsahuje funkce volané při určitých jevech, jako například připojení zařízení k PC: Veškerá obsluha audio device by měla být vytvořena v dalším vygenerovaném souboru usbd_audio_if.c,​ který obsahuje funkce volané při určitých jevech, jako například připojení zařízení k PC:
Řádek 118: Řádek 119:
 } }
 </​code>​ </​code>​
 +
 +===== Vykreslení spektra na LCD =====
  
 Funkce DrawSpectrum má jediný vstupní parametr a to ukazatel na začátek pole s vzorky audio spektra. Při prvním vykreslení dojde k vymazání obsahu displeje a pak je postupně v cyklu vykreslen jeden sloupec (o šířce 1px) pro každý vzorek. Výška sloupce je pak dána hodnotou vzorku. V případě dalšího kreslení téhož sloupce v následujícím cyklu je porovnána aktuální hodnota s tou předchozí a na základě nerovnosti je pak dokreslen rozdíl; tedy černý sloupec tam, kde je aktuální hodnota menší a zelený při vyšší aktuální hodnotě. Díky tomu není nutné při každém novém vykreslování vymazávat obsah displeje a spektrum pak v čase //​nemrká//​. Funkce DrawSpectrum má jediný vstupní parametr a to ukazatel na začátek pole s vzorky audio spektra. Při prvním vykreslení dojde k vymazání obsahu displeje a pak je postupně v cyklu vykreslen jeden sloupec (o šířce 1px) pro každý vzorek. Výška sloupce je pak dána hodnotou vzorku. V případě dalšího kreslení téhož sloupce v následujícím cyklu je porovnána aktuální hodnota s tou předchozí a na základě nerovnosti je pak dokreslen rozdíl; tedy černý sloupec tam, kde je aktuální hodnota menší a zelený při vyšší aktuální hodnotě. Díky tomu není nutné při každém novém vykreslování vymazávat obsah displeje a spektrum pak v čase //​nemrká//​.
Řádek 125: Řádek 128:
 #define fft_display_offset (200)             // nastaveni odstupu od spodni strany displeje #define fft_display_offset (200)             // nastaveni odstupu od spodni strany displeje
 #define y_res (1)                            // nasobek pro zvetseni #define y_res (1)                            // nasobek pro zvetseni
 +//...
 +static float32_t fft_signal_temp[FFT_SIZE/​2];​
 //... //...
 void DrawSpectrum(float32_t* fft_signal){ void DrawSpectrum(float32_t* fft_signal){
Řádek 155: Řádek 160:
  
 ===== Praktická ukázka ===== ===== Praktická ukázka =====
 +
 +Audio je do videa přidáno dodatečně,​ proto je zvuk trošku nesynchronizovaný.
 +{{youtube>​YwCvOcq2hdQ}}
 +
  
 ===== Závěr ===== ===== Závěr =====
2015/audio-visual-out.1453063119.txt.gz · Poslední úprava: 2016/01/17 21:38 autor: Daniel Kresta