WAV på en beeper

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Danish to

Threaded View

Hvad er teknikken for at afspille en "wav fil" (f.eks en hund der siger vov
!) på en beeper på en microcontroller?

Jeg ved godt at det kun bliver nogle få sekunder jeg kan have (avr mega 128)
men det kunne da være meget sjovt.

Hvad er det helt præcist jeg skal føde min timer / pwm udgang med ?

Jeg kan sætte min pwm til f.eks. 5 khz, og så skrive aktuelle sample værdi
til duty-cycle registeret, men bliver der musik ud af det ?

mvh Troels



Re: WAV på en beeper
Hej!

Quoted text here. Click to load it

En løsning baseret kun på en microcontroller såsom M128'eren _kunne_ være
udformet således:

Læg alle sampleværdierne i et passende stort array. Der laves et program til
dette formål :)

Læs een værdi ud på en port af gangen i takt med samplingsfrekvensen.

På denne port har du monteret en D/A konverter, som er sluttet til en forstærker
+ højttaler. Vælg en D/A konverter med 8 bit indgang (du får vel ikke brug for
16 bit lyd :)).

--
Mvh, Kim Voss Schrader

OBS: Der kan max. attaches 30kb i e-mails til mig, ellers bouncer de.

Re: WAV på en beeper
Quoted text here. Click to load it

Formålet er ikke at lave et print der kan spille lyd. Jeg _har_ et print med
en beeper, jeg gerne vil have til at spille en sample for sjov skyld.

Buzzeren sidder direkte på en digital udgang (dog med en driver). Dvs hvis
jeg skriver 0 og 1 til porten hvert halve millisekund får jeg en tone på
1kHz.

Som nævnt i første indlæg sidder buzzeren på en udgang der kan styres af en
timer/pwm i mega 128'eren, hvis det er nogen fordel.

mvh Troels



Re: WAV på en beeper
Quoted text here. Click to load it
vov

En evt. WAV fil skal vist først konverteres til noget RAW-data, da der er
header og andet i en WAV fil :)


Brian



Re: WAV på en beeper

Quoted text here. Click to load it

Ja, hvordan jeg lige får lavet en wav på pc'en om til
const char theSample[] = {0x00 , 0x.. , 0x.., 0x.., 0x.., 0x.. };
skal også løses, men det er et praktisk problem !

Desuden skal den nok downsamples lidt.

mvh
Troels




Re: WAV på en beeper
Hej!

Quoted text here. Click to load it

Ganske simpelt. Gem den først i en downsamplet udgave som raw. Herefter laver du
et lille program/script/whatever som laver dit array byte for byte af dit
sample.

--
Mvh, Kim Voss Schrader

OBS: Der kan max. attaches 30kb i e-mails til mig, ellers bouncer de.

Re: WAV på en beeper
Quoted text here. Click to load it
vov
128)
Quoted text here. Click to load it

Hvis du vil bruge en pwm til at lave dit "analog" signal skal du nok vælge
en frekvens der er noget højere end 5Khz. Du skal nok også have et lille
lapas filter mellem din cpu og forstærker.


--
Hilsen
   Peter N Petersen
We've slightly trimmed the long signature. Click to see the full one.
Re: WAV på en beeper

Quoted text here. Click to load it
vov
128)
Quoted text here. Click to load it

Du skal ændre duty cyclen på din udgang i takt med de analoge værdier.
For at kunne gøre det, skal du have en frekvens der ligger over det hørbare
område på din udgang og det er så denne frekvens du ændre duty cycle på. Der
bør så sidde et lavpasfilter imellem udgangen og højtaleren.







Re: WAV på en beeper
Quoted text here. Click to load it
hørbare
Quoted text here. Click to load it
Der

Ja, høj "samplerate" og så et lavpas filter, det er jo i virkeligheden en
simpel DA converter.

Men se lige dette kode jeg fandt. Programmet indlæser en wav fil og spiller
det på pc-speakeren
http://www.bsdg.org/SWAG/SOUND/0075.PAS.html

  procedure New; Interrupt;
    begin
        if buf[I] > $80 then
          Sound(rate) else NoSound;
    end;

(rate er konstant, det er frekvensen. buf er selve bufferen der indeholder
den indlæste sample)

Han styrer ikke duty-cyclen (kan måske ikke på en pc?) men kun on/off. Og da
han kun har to output værdier (on/off) vælger han at alle sample værdier
under 80 hex betyder off og alle over betyder on.

Så i realiteten er samplene kun1 bit Det er da en stabil komprimering !!!

Den første metode MÅ være bedst, men hvis jeg får tid vil jeg da prøve det
sidste også !!


mvh Troels




Site Timeline