Go Down

Topic: Melodien Soundsequenzen mit dem arduino wieder geben (Read 2 times) previous topic - next topic

DennisD

Hallo
Vorweg ich bin ein Neuling auf dem gebiet der Microcontrollern
ich möchte mit dem Arduino Einen soundgenerator machen um ein LKW Dieselgeräusch zu erzeugen und in der Drehzahl zu regeln
Ist das Möglich ?

Danke im Voraus

DennisD

Ist hier Niemand der mir helfen will oder kann ?

Addi

Du kannst Melodien abspielen, wenn du die Frequenzen des LKW kennst.
Wenn ich mich nicht irre heiß die Funktion tone().

Addi
/ \    _|  _| o
 /--\ (_| (_| |

uwefed


Du kannst Melodien abspielen, wenn du die Frequenzen des LKW kennst.
Wenn ich mich nicht irre heiß die Funktion tone().
Addi

Das klingt dann aber gar nicht nach einem Dieselmotor.
DennisD hast Du dich mal bei Modellbaubedarf informiert oder auf solche Seiten über Modellbauprojekte.

Du kannst auf einer SD-Karte ein Musikfile aufzeichnen und dieses mit einem Shield, von Arduino gesteuert abspielen.

Grüße Uwe

qualidat

Doch, das geht. Zuerst brauchst du eine Originalaufnahme. Die bearbeitest du am PC mit einem Soundeditor (z.B. Audacity) so, dass eine "nahtlose" Soundschleife von ca. 1 Sekunde Länge entsteht. Mit "nahtlos" meine ich, dass beim ständig wiederholten Abspielen kein Knacksen  beim Übergang Ende zu Anfang zu hören ist. Da musst du mit dem grafischen Wellenbild etwas experimentieren ...

Der nächste Schritt ist das Abspeichern als unkomprimiertes WAVE-File, mono, 8 Bit, Samplingrate ca. 6..8 kHz. Du kannst den Klang dann schon mal am PC testen, indem du auch den zukünftig zu verwendenden Lautsprecher anschliesst (wahtscheinlich irgend einen Mini-Speaker?). Je geringer die Samplingrate ist, mit der du dich zufrieden gibst, um so besser - desto gringer die Datenmenge. Erwarte kein Hifi, guter "Telefonsound" ist aber durchaus zu ereichen.

Als nächstes musst du mit einem Hex-Editor die Haeder-Daten vom Wave-File abschneiden. Wie lang der Haeder ist, steht z.B. bei Wikipedia. Würdest du diese Daten vom Arduino mit abspielen lassen, kämen die als Knacken und Kratzen 'rüber. Der übriggebliebene Datenblock kommt als Byte-Array mit in den Programmtext oder auf die SD-Karte (falls du öfters mal tauschen willst).

Zum Abspielen liest du im Arduino-Programm Byte für Byte und schiebst das per PWM aus einem Ausgangs-Pin, wo dann der Lautspecher oder ein Verstärker angeschlossen ist. Dazu musst du noch die Frequenz der PWM auf 32 kHz erhöhen (steht u.a. hier: http://arduino.cc/forum/index.php/topic,45094.0.html), damit die sicher aus dem Bereich der hörbaren Frequenzen raus ist. Das hat noch Nichts mit der Abspielgeschwindigkeit zu tun, die bestimmst du damit, wie schnell du jeweils ein neues Byte aus den Sunddaten "nachlädtst". Das sollten so 5000 ... 8000 pro Sekunde sein - Nichts, was den Arduino wirklich ins Schwitzen bringt, es ist also noch genügend Kapazität für irgend eine Empfangsroutine (seriell, Ethernet) oder das Auslesen des AD-Wandlers zur Beeinflussung der Abspielgeschwindigkeit ...

Go Up