Riproduzione file MIDI con comando tone...

Salve ragazzi.. vorrei chiedervi una cosa, ho un Arduino uno ed un altoparlante ad 8 Ohm: volevo chiedere se e' possibile realizzare un programma che legga da un file MIDI le note e le loro rispettive durate e li inserisca tramite un ciclo in due array paralleli da usare in seguito per riprodurre le note e le pause con i due comandi delay e tone (tramite un altro ciclo)? Tutto questo senza l'ausilio di altri componenti come MIDI jack ecc.. :o Grazie in anticipo a tutti :smiley:

Kiriso<

If you want to read a MIDI file you can use my MIDI file library in the codeplex code library linked at the bottom of the post, in my signature.

Non puoi collegare un altoparlante da 8Ohm direttamente ad Arduino. Ti serve o un amplificatore o una resistenza da 330 Ohm in serie.
Ciao Uwe

Salve ragazzi..

Ciao!

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

usando un transistor, una induttanza e un condensatore si ottiene una sottospecie di amplificatore in classe d che andrà collegato ad arduino in una uscita pwm.

@uwe perché una resistenza da 330ohm? Non basta una da circa 125 ohm?

vbextreme:
@uwe perché una resistenza da 330ohm? Non basta una da circa 125 ohm?

Perché 40 mA sul singolo pin è un massimo assoluto, non è la corrente massima consigliata per un pin, che è attorno ai 20 mA, da qui i 330 ohm che, sommati agli 8 ohm, limitano la corrente ad un conservativo 5/338 = 15 mA.
Rimane il fatto che indipendentemente dalla resistenza in serie non si deve mai collegare direttamente un carico induttivo ad un pin di un micro, sopratutto un grosso carico induttivo come un AP, la possibilità di fare danni per le extratensioni, anche decine di Volt, generate da un induttore è alta.

deduco che il discorso per l'assorbimento valga anche per il pwm, quindi mai oltre i 20ma, ok grazie mille!

Invece se lo si trasforma in una specie di amplificatore in classe d va bene?
tipo qualcosa simile a questo:

                    +v         L1    C2
                    |----------§-----||---   /|
                    /            |        | / |
<pwm arduino>------|  T1         -C1      |/  | speaker
                    \            -         \  |
                    |            |        | \ |
                    gnd          gnd     gnd \|

Grazie a tutti per le varie possibili soluzioni, provero' e vi faro sapere :slight_smile:

Kiriso<

vbextreme:
deduco che il discorso per l'assorbimento valga anche per il pwm, quindi mai oltre i 20ma,

Si, sempre meglio non andare oltre i 20-25 mA sul singolo pin, ovviamente rispettando anche la massima corrente per PORT e quella massima per tutto il micro.

Invece se lo si trasforma in una specie di amplificatore in classe d va bene?
tipo qualcosa simile a questo:

                    +v         L1    C2

|----------§-----||---  /|
                    /            |        | / |
------|  T1        -C1      |/  | speaker
                    \            -        \  |
                    |            |        | \ |
                    gnd          gnd    gnd |

In linea di massima si, però un amplificatore in classe D è una cosa un pelino diversa, e più complessa, di un semplice transistor, o mos, in questo caso è semplicemente un driver di potenza single side.

si lo so ma il classe d non è l'unico negli impianti audio ad essere controllato in pwm? :slight_smile:
dici che potrebbe andare quello schema?
sono abbastanza interessato anche io a una cosa simile a questa.
faccio un paio di ricerche sul single side.....gia sentito ma la memoria mi inganna.....

vbextreme:
si lo so ma il classe d non è l'unico negli impianti audio ad essere controllato in pwm? :slight_smile:

L'amplificare in classe D non è controllato in pwm, l'ingresso è sempre un segnale analogico, è lui che internamente lavora in pwm, a oltre 300 kHz, per ottenere un rendimento superiore al 90%, non sono semplici da realizzare.