|
Autore |
Messaggio |
opzioni |
mastertechnology
postato il: 19.11.2018, alle ore 11:06 |
Real-Time Audio Spectrum Analyser
Salve a tutti finalmente ho avuto una idea per rendere più piacevole ascoltare musica. Ho trovato questo progetto https://www.waitingforfriday.com/?p=325 ma lo devo modificare. qui usa un display ma io vorrei usare dei led. mi potette aiutare con i codici?
L'altruismo rende forti.
https://www.youtube.com/channel/UC5yld_Lh_D9ffo_GgxMIiqg?view_as=subscriber |
|
mastertechnology
postato il: 19.11.2018, alle ore 11:41 |
Ho isolato una parte del circuito che serve per convertire il segnale audio nel segnale che mi serve per il mio pic. adesso comincio a lavorare sul codice.
L'altruismo rende forti.
https://www.youtube.com/channel/UC5yld_Lh_D9ffo_GgxMIiqg?view_as=subscriber |
|
picmicro675
postato il: 19.11.2018, alle ore 12:29 |
Non lo trovo difficile, devi elaborare solo un segnale analogico con l' ADC.
C'è anche il sorgente da scaricare
Anno nuovo, forum nuovo.
Mi sa che lascio. |
|
double_wrap
postato il: 19.11.2018, alle ore 16:41 |
mastertechnology: qui usa un display ma io vorrei usare dei led.
Nel file main.c c'e' il vettore realNumbers[k] di 32 elementi dove viene scaricato il risultato della fft.
// Now we have 32 buckets of audio frequency data represented as
// linear intensity in realNumbers[]
//
// Since the maximum input value (in theory) to the SQRT function is
// 32767, the peak output at this stage is SQRT(32767) = 181
Basta che tu lo legga ed invii il contenuto ad una matrice di led, ad esempio 32x8. Serve una normalizzazione 181->8 y=x*8000/181000 (usa variabili long)
Se vuoi usare matrici di led 16x8 , fai la media di due campioni adiacenti
Per rinfrescare la matrice puoi usare degli expander i2c o anche dei banali 74hc595
"se peso cado, ma se cado non peso"
adamatj.altervista.org |
|
mastertechnology
postato il: 20.11.2018, alle ore 10:53 |
non sono bravo come voi ma ci provo. Adesso ho configurato il mio PIC16F628A con oscillatore interno da 4MHz, come compilatore sto usando il mikroC. Vi passo ulteriori aggiornamenti del mio progetto. PS io andrò a usare un cubo 3X3 a led trasparenti.
L'altruismo rende forti.
https://www.youtube.com/channel/UC5yld_Lh_D9ffo_GgxMIiqg?view_as=subscriber |
|
mastertechnology
postato il: 20.11.2018, alle ore 12:03 |
devo configurare una porta come ADC ma non riesco a trovare nel pdf la voce del registro. In effeteti dice che questa riga è sbagliata ADCON = 0b00001110;
L'altruismo rende forti.
https://www.youtube.com/channel/UC5yld_Lh_D9ffo_GgxMIiqg?view_as=subscriber |
|
picmicro675
postato il: 20.11.2018, alle ore 18:20 |
Cambia micro, non c'è ADC nel 16F628A, solo comparatori analogici.
Anno nuovo, forum nuovo.
Mi sa che lascio. |
|
mastertechnology
postato il: 21.11.2018, alle ore 08:59 |
che guaio avevo questo nel mio cassetto. pazienza me ne trovo un altro.
L'altruismo rende forti.
https://www.youtube.com/channel/UC5yld_Lh_D9ffo_GgxMIiqg?view_as=subscriber |
|
mastertechnology
postato il: 21.11.2018, alle ore 09:59 |
Ecco iniziato il progetto.
/* Project name:
Spectrum con Cubo 3X3
* Description:
Spectrum con Cubo 3X3
* Configuration:
MCU: PIC16F1508
Oscillator: 16.0000 MHz
* SW:
mikroC PRO for PIC */
/*****************************************************************************/
void initSettings();
void Lettura();
/*****************************************************************************/
void main()
{
initSettings();
while (1)
{
Lettura();
}
}
/*****************************************************************************/
void initSettings ()
{
OSCCON = 0b01111000; //Frequenza interna 16MHz
//Disabilito i moduli che non mi occorrono
FVRCON.FVREN = 0; //Fixed Voltage Reference
DACCON0.DACEN = 0; //Modulo DAC
CM1CON0.C1ON = 0; //Comparatore 1
CM2CON0.C2ON = 0; //Comparatore 2
PWM1CON.PWM1EN = 0; //PWM 1
PWM2CON.PWM2EN = 0; //PWM 2
PWM3CON.PWM3EN = 0; //PWM 3
PWM4CON.PWM4EN = 0; //PWM 4
CLC1CON.LC1EN = 0; //Logic Cell 1
CLC2CON.LC2EN = 0; //Logic Cell 2
NCO1CON.N1EN = 0; //Numerically Controlled Oscillator
CWG1CON0.G1EN = 0; //Complementary Waveform Generator
INTCON = 0; // Turn off all interrupts
/*****************************************************************************/
ADCON0 = 0b00000001; //Abilito convertitore ADC e rendo RA0 Analogico
ADCON1 = 0b00000000; //Disabilito convertitore ADC
ANSELA = 0b00000001; //RA0 Analogico
ANSELC = 0b00000000; //Tutti digitali
TRISA = 0b00000001; //RA0 ingresso il resto uscite.
PORTA = 0b00000001; //RA0 ingresso il resto uscite.
TRISC = 0b00000000; //Uscite
PORTC = 0b00000000; //Uscite
}
void Lettura() {
}
L'altruismo rende forti.
https://www.youtube.com/channel/UC5yld_Lh_D9ffo_GgxMIiqg?view_as=subscriber |
|
picmicro675
postato il: 21.11.2018, alle ore 14:33 |
Stringi un po il codice, che spagina.
Metti la linea di marcatura a 80 colonne.
Poi manca un po per venire al sunto, che hai visto del programma da dove sei partito ?
Anno nuovo, forum nuovo.
Mi sa che lascio. |
|
|