Mario A
Arduino player solo software
Tutorials -
Sabato 24 Marzo 2012 09:29
Scritto da Mario A

Questo tutorial spiega come fare la semplice riproduzione di brevi campioni audio, circa 4 secondi, a basso bitrate (8 KHz) da Arduino, utilizzando solo un altoparlante.

Si basa sul codice PCMAudio di Michael Smith.

Pre-Requisiti

Avrete bisogno di:

  • Un Arduino UNO o Duemilanove
  • Un altoparlante piezo o un buzzer .
  • IDEArduino, versione 0022, 0023 o 1.0

Spiegazione

La riproduzione audio funziona con due timer della scheda Arduino, la funzionalità hardware del microcontroller AVR ATmega328 che viene normalmente utilizzata per generare l'output PWM con la funzione analogWrite().Un timer viene utilizzato per generare una alta frequenza dell'onda quadra il cui duty cycle corrisponde ad un valore particolare (ampiezza) nel campionamento audio.Un altro timer viene utilizzato per aggiornare questo ciclo di lavoro a 8 KHz, la frequenza di campionamento dell'audio. Come conseguenza dell'uso di questi temporizzatori, l'uscita PWM (analogWrite ()) non funziona sui pin 3, 9, 10 o 11. Si dovrebbe essere ancora in grado di utilizzare i pin 3, 9, e 10 per l'input e l'output digitale.

Il segnale audio verrà generato sul pin 11.

Scaricare e installare la libreria PCM per Arduino

Download: damellis-PCM-something.zip

Installazione:

  1. Decomprimere il file.
  2. Rinominare la cartella risultante dal "damellis-PCM-qualcosa" semplicemente PCM.
  3. Se non esiste già, creare una cartella chiamata "Libraries" all'interno della vostra cartella di Arduino.
  4. Spostare la cartella PCM nella cartella "libraries" nella cartella Arduino.

Caricare l'esempio

Avviare il software Arduino.

Da File > Examples > PCM, aprire l'esempio di "Playback".

Collegare il piezo oil buzzer tra il pin 11 e GND della scheda Arduino ( attenzione che alcuni buzzer hanno il + e il - , quindi il + al pin 11 e il - al GND.

Fare Upload dell'esempio sulla scheda Arduino.

Dovreste sentire "Arduino Duemilanove" (pronunciata da un italiana vera!).

 

Codice opportunamente ridotto :

const unsigned char sample[] PROGMEM = { 126, 127, 9, 128, 127, 126, 127,......};

void setup() {
  startPlayback(sample, sizeof(sample));
}

void loop() {
}

Funzioni della libreria
La libreria ha solo due funzioni: startPlayback () e stopPlayback ().

la prima prende due argomenti: la matrice dei campioni audio e la sua lunghezza. Ad esempio: startPlayback (sample, sizeof (sample));

La seconda stopPlayback () non richiede alcun argomento e interrompe la riproduzione del campione corrente. Si noti che l'esempio utilizza anche un paio di insoliti costrutti di Arduino.Innanzitutto, la matrice sample[]  viene dichiarata utilizzando la parola chiave PROGMEM , che inserisce i dati da memorizzare nella memoria di programma di Arduino (flash) invece che nella RAM (che è molto più piccola). Esso utilizza anche la funzione sizeof (), che restituisce il numero di byte utilizzati da parte di un array.

 

Provate e vi meraviglierete. Se volete avere maggiori informazioni (in inglese ) per aggiungere nuovi campionamenti, l'articolo è stato tratto da:

http://hlt.media.mit.edu/?p=1963

 

Gioblu Robotics © 2010 - 2012 · Sitemap · privacy

gioscarab@gmail.com

Gioblu BOTServer è online dal 10 Aprile 2010 - 319.232 Visite - 1.027.175 Pagine visualizzate - 182.309 Visitatori unici - 536 utenti attivi