Hallo Forum, Ich möchte gerne für mein Modelauto ein PopOff Sound bauen. Kann ich mit dem atmel ein zischen wiedergeben (ca 5sec)? Der Atmel hätte nur das zu tun, es soll klein bleiben da ich nicht viel Platz habe (kein mp3 Modul) Danke!
schnapp dir einen, der genug ram und einen pwm ausgang hat. dann klappt das, brauchst nen bisschen hühner futter und gut
ich meinte überigens genug flash, als speicher für den sound... 2 timer(1 pwm, einen für den nächsten pwm-wert) sollte reichen wirste hier aber bestimmt auch irgendwas finden, wird ja ehr türgong ähnlich
Ich dachte da an einen Atmeg8 aber wie kann ich die pwm-tabelle erzeugen ? danke & lg.
@radu (Gast) >Ich dachte da an einen Atmeg8 aber wie kann ich die pwm-tabelle erzeugen >? So wie man in der Programmiersprache deiner Wahl ein Datenfeld anlegt.
@Falk Brunner Ja das ist mir schon klar aber -- wenn ich ein wav habe wie kann ich die werte für die pwm heraus bekommen ? muss keine wav sein aber wie weiss ich wann ich welche PWM einstellen soll ? kann ich über den ADC zuerst aufnehmen und dann über die PWM ausgeben ? Die Qualität wird schlecht sein oder?
Das Geräusch entsteht durch das Überdruckventil nach dem Tubolader wenn die Drosselklappe bei starker Last schnell geschlossen wird. Im Prinzip kann man das Rauschen durch eine geeignet modulierte Zufallsgröße erzeugen. Relevant für den Klang sollte nur die Hüllkurve sein. Eine Rauschsequenz (die man mit random() erzeugt) kann man im Ram ablegen und als Loop abspielen. Die Hüllkurve sollte sich mit einer geringen Zahl an Variablen beschreiben lassen. Grüße, Peter
Wenn es nur ein erst mal starkes Rauschen sein soll, das langsam abklingt, dürfte es "voll easy" in Echtzeit mit einem AT-Tiny machbar sein. (1) Pseudo-Zufallszahl mit rückgekoppeltem Schieberegister erzeugen. Google: LFSR Geht in 16 oder weniger Rechnertakten. (2) Beim Timer-Interrupt neue Zufallszahl berechnen, daraus eine Zahl zwischen 64 und 255 gewinnen: Low-Byte OR 64. Ergibt die Periodendauer = Variable Rauschfrequenz. (3) Vom Zahlenwert der Periodendauer anfangs 32, langsam immer weniger abziehen. Mit Ereigniszähler und Tabelle. Ergibt Pulsbreite = Lautstärke. Bei den ATTINYs im Datenblatt nachschauen, wie man das den PWM-Timern und PWM-Port-Pins beibringt. Piezo-Piepser an den PWM-Ausgang schalten. Eventuell RC-Glied zur Sound-Verschönerung davor.
8 bit pcm unsigned wave file to c header file? also ich hatte da mal ein töölchen gehabt. source ist angehängt. Bedienung: ./wav0xconv <infile >outfile wie z.B. minifloat:~ minifloat$ wav0xconv <bassdrum.wav >myheader.h dann die headerdatei bearbeiten: wenn am anfang und ende lang digitale stille ist(0x00) ist der anfang. ein samplewert, nämlich die 0x00 stoppt bei mir wie ein string-ende zeichen einen parser. also werden dir durch 0x01 ersetzt. Um den 0-bereich(Vcc=5V U_out = 2.5V hab ich ein bit verloren, was solls, übernahmeverzerrungen). am ende ist vor } ein ; zuviel. das merkt auch der GCC. zurechteditieren, rüberkopieren was auch immer. 8bit unsigned wavs kann man z.B. mit Audacity erzeugen. mfg mf
Beim Atmel AVR noch pgmspace.h einbinden und PROGMEM hinter den Variablennamen "myvar" setzen. So kann man dann mit wiederholtem
1 | global PGM_P bytecount; |
2 | bytecount = myvar; |
3 | buffer = pgm_read_byte_near(*bytecount++); |
samplewerte auslesen. mfg mf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.