MODALITA' GOD MODE

per Win 7 - GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}


Sperimentiamo:

Audio e Arduino

 

 

 

 

 



ARDUINO PARLA, CANTA E SUONA

~ grazie alla Pulse Code Modulation ~

 

 

 

 

Qualche informazione a riguardo:

 

 

In questa pagina metto a disposizione una libreria PCM

e un programma scritto in AutoIT per fare in modo

di poter riprodurre dei piccoli brani in formato WAVE con Arduino

attraverso un piccolo altoparlante collegato direttamente tra il pin 11 e GND.

 

La libreria PCM va utilizzata con Arduino e serve a generare l'audio

a partire da una serie di valori numerici, che vanno

da 0 a 255, memorizzati in un array di costanti char.

 

Creare un array da riprodurre come audio a partire da un file Wave

è un'operazione lunga e faticosa, ecco perchè con AutoIT ho creato

il programma di aiuto Wave_to_Arduino.exe, e intanto che c'ero

ho implementato la possibilità di creare anche il

sorgente COMPLETO, pronto da compilare.

 

La libreria l'ho modificata e ampliata partendo da un'idea

di David. A. Mellis, ho aggiunto una funzione più complessa

e sinceramente ora mi piace di più.

 

Ho anche aggiunto la possibilità di interrogare

lo stato del Player per ottimizzare le sincronizzazioni tra

audio diversi da riprodurre, in pratica ora possiamo far partire

un secondo audio immediatamente al termine del precedente.

 

Pensato per riprodurre brevi suoni/effetti alla

pressione di pulsanti o in risposta ad eventi.

 

Se vi interessano approfondimenti questo è

il link e qui ci sono ulteriori info a riguardo.

 

La libreria utilizza la modulazione PCM generata

mediante la periferica PWM di Arduino.

Guarda un tutorial sulla Pulse Code Modulation:  link al video

 

Per suonare non necessita di nessuna interfaccia hardware,

serve solo un altoparlante e basta!

 

Questa libreria suona sfruttando l' INTERRUPT,

quindi mentre Arduino esegue il brano

si possono eseguire le normali operazioni di routine,

acquisire pulsanti, accendere leds,

scrivere su display, leggere sensori....

insomma, tutto quello che volete fargli fare.

 

Prestare molta attenzione a quelle istruzioni o librerie

che sfruttano il TIMER 2 in modo da non causare conflitti temporali

che potrebbero compromettere il corretto funzionamento del software.

 

Per dare la voce al vostro Arduino vi servono due programmi specifici

che potete scaricare e utilizzare immediatamente perchè non è richiesta

nessuna installazione, tranne che per la libreria PCM_8K-master.zip

Va aggiunta all'IDE di Arduino per poter compilare e creare un eseguibile.

 

  scarica PCM_8K + Wave to Arduino 

    è un file zip e contiene due cartelle:

 

Cartella 1: PCM_8K-master.zip

E' la libreria PCM da aggiungere alle librerie comuni di Arduino,

non mi dilungo perchè sapete già come fare...

ma se non ve lo ricordate guardate qui:

 

Cartella 2: Wave_to_Arduino.zip

Scompattatela dove volete, apritela e

fate doppio click sul file Wave_to_Arduino.exe.

Serve per convertire un file audio dal formato WAVE

a quello SORGENTE per Arduino (.INO),

yess, capito bene,

un SORGENTE BELLO E PRONTO,

sarà solo da compilare e ascoltare subito!

 

 


 

Il convertitore funziona così:

 

 

Prendete un file audio a vostro piacimento e con il vostro

editor audio preferito tagliatelo, cucitelo e stiratelo

per estrarne una porzione che non superi i 4 secondi di riproduzione.

Il formato non importa, basta che il vostro editor

audio possa riconvertirlo in WAVE.

 

( Files audio interessanti li scarico da qui: ZEDGE )

 

Fatto?

 

Bene, ora convertitelo e salvatelo nel formato

WAVE, 8 Bit, MONO e con samplerate 8000 Hz.

Mi raccomando, il file DEVE essere salvato a:

8 Bit, MONO e RICAMPIONATO a 8KHz!!

 

Il file sarà grande circa 34 Kb e non dovrà superare

i 4 secondi di riproduzione perchè la memoria

di Arduino non è infinita, e siccome il file verrà "tradotto"

in un grande ARRAY di COSTANTI,

capite bene che il limite è proprio la memoria

FLASH dell'Arduino che abbiamo a disposizione.

 

Si possono salvare anche dei brani più corti per

riprodurli poi con un determinato comando,

sarà sufficiente creare diversi ARRAYS

(naturalmente assegnando nomi diversi, ovvio)

ma fate attenzione che la somma del tempo di riproduzione

dei brani non deve mai superare il limite massimo di 4 secondi, ok?

 

In teoria si potrebbe realizzareare un orologio parlante

che "dice" le ore frammentando le varie frasi

in tanti arrays quante saranno le ore da annunciare....

 

...ma è solo una delle tante applicazioni che mi vengono in mente...

 


 

Il convertitore da Wave a .INO si presenta così:

 

...ho preso di mira Stuart perchè mi è simpatico...

 

POCHE ISTRUZIONI... TANTA RESA!

1)

Apri un file Wave (che sia compatibile... altrimenti si incazza)

2)

Clicca su converti e aspetta qualche secondo di "macinatura bytes"

3)

Ora decidi se vuoi copiare solo la struttura dell'array, oppure...

4)

...se vuoi il sorgente COMPLETO e FUNZIONANTE (.ino)

 

A questo punto nella tua clipboard verrà copiato

uno dei due formati che hai selezionato.

Quindi, nell'IDE di Arduino fai un bel

"INCOLLA" e tira dentro quel che vuoi, compila e godi.

 

L'esempio qui sotto illustra come viene creato l'array (di nome RAW) allineato

e formattato in automatico dal mio programma Wave_to_Arduino.exe.

pronto da inserire, o sostituire, nel sorgente di Arduino.

Tenete conto del numero di BYTES restituito in fondo all'array perchè

andrà utilizzato come secondo parametro della funzione Playback_ON().

 

nell'esempio ho tenuto solo una quindicina di righe di definizione dell'array
cancellandone circa 600 così da poter contenere le dimensioni in una JPEG.

 

questi invece sono due esempi di sorgente completo,

generati col programma e utilizzando due effetti audio,

BipBip di Willy Coyote e Ring, la cara vecchia suoneria.

 

WAVE -> INO

BipBip.wav

BipBip.ino

Ring.wav

Ring.ino

click per scaricare

 

 


 

Istruzioni per utilizzare la libreria:

 

 


INCLUSIONE LIBRERIA

DESCRIZIONE


#include <PCM_8K.h>



Direttiva per il compilatore per poter utilizzare correttamente la libreria PCM_8K.





Inserire la direttiva all'inizio del programma sorgente.






FUNZIONI e PARAMETRI

DESCRIZIONE


Playback_ON(nomeArray, nBytes, Loop)



Converte in suono l'array specificato, di lunghezza x bytes, solo una volta o in continuo.


array di costanti, integer, boolean



Loop = Play_SINGLE (false) oppure Play_LOOP (true)







Playback_OFF() nessun parametro



Spegne immediatamente il player







CheckPlayer() ritorna un valore boolean



Interroga lo stato del Player - ritorna un boolean false o true





Player_IN_STOP (false) oppure Player_IN_PLAY (true)






FLAGS di SISTEMA

DESCRIZIONE


Player_IN_STOP (false)



Il Player è disattivato


Player_IN_PLAY (true)



Il Player è in funzione


Play_SINGLE (false)



Esegue il brano una sola volta


Play_LOOP (true)



Esegue il brano in continuazione. Si ferma con Playback_OFF()






LA LIBRERIA FUNZIONA CON L'INTERRUPT GENERATO DAL TIMER 2



Nei file zippati ci sono anche degli esempi già pronti da compilare

e qualche effetto audio salvato nel formato

WAVE, 8 Bit, MONO, Sample 8 KHz,

in modo che possiate fare i vostri esperimenti.

 

 


 

Your sniffed IP is:  - All rights reserved - 2022/2023 - Tutti i diritti riservati.

I marchi citati sono di proprieta' delle rispettive aziende - All trademarks are the property of their respective owners and companies.

Carlo Manzoni - Via Enrico Fermi, 10 - 26848 San Fiorano (Lo) - Mobile: +39 338 3114954 - C.F: MNZCRL57A04H844O

(i numeri sconosciuti sono bloccati, al cellulare rispondo solo previo SMS/Whatsapp di presentazione)