Sound Modul - Thread?

Hallo zusammen,

wie ich bereits in den ersten Stunden meiner Arduino-Bastelei erfahren musste, ist er von Werk aus nicht Threadfähig und auch die angebotenen Softwarelösungen halte ich zu aufwendig und zu unprofessionell. Bisher war das auch für mich kein Problem. Bis jetzt:

Ich baue ein einem Arduino RC-Car welches über viele Lichtchen und Lämpchen verfügt und über einen Xbox-Controller gesteuert wird. Das ganze habe ich statt Thread über eine Laufvariable relaisiert, die bei jedem Durchlauf hochzählt und zum Beispiel alle 20 Durchläufe eine LED schaltet oder so. (Kein Genietrick). Das lief auch alles wunderbar. Jetzt möchte ich aber auch Sound wiedergeben (Für Martinshorn - Das ganze wird ein Rettungswagen), also habe ich mir das Wave-Shield von Adafruit bestellt, was ich dann auf den Mega gesetzt und so umgebaut, dass es funktionierte, habe. In einem Programm, welches nur Sound abspielte lief das ganze prima, aber als es ich in das Programm meines Rettungswagen eingebunden habe ging es nicht mehr. Ich nehme an - ich bin mir eigentlich sicher -, dass der Arduino Soundwiedergabe, Lichsteuerung und vor allem Controllerauslesen nicht auf einmal schafft und der Sound nicht zu hören ist, weil die Wellen einfach zu wenig Frequenz haben.

Auf jeden Fall habe ich schon Lösungen angedacht, die ich meiner persönliche Beliebtheit absteigend, unabhängig von der Umsetzungsmöglichkeit, hier aufzählen will:

1. Eine andere Arduino-Sound Platine, die unabhängig vom Arduino Sounds abspielt. (Glaube nicht, dass es so etwas gibt)

2. Ein Arduino Nano mit Gravitech Arduino Nano MP3 Board, der nur für die Sounds zuständig ist und mit dem MEGA kommuniziert (Relativ teuer und das MP3 Board ist in Deutschland schwer zu kriegen)

3. Ein Raspberry Pi, der nur für die Sounds zuständig ist (Habe ich noch zuhause, nimmt aber Platz und Strom weg und hat eine relativ hohe Bootzeit mit Raspbian, außerdem ein bisschen OP für diese Aufgabe)

Vielleicht habt ihr ja noch weitere Ideen. Ich danke schonmal im Vorraus. MfG Yannic

Sketch zeigen, hier wird das Problem liegen -> blockierender Code. Es gibt MP3 Shields, die digital angesteuert werden.

J0hnd0e1: 1. Eine andere Arduino-Sound Platine, die unabhängig vom Arduino Sounds abspielt. (Glaube nicht, dass es so etwas gibt)

Doch, die gibt es. Z.B. hier:

http://www.beier-electronic.de/modellbau/produkte/usm-rc-2/usm-rc-2.php

oder hier:

http://www.hobbyking.com/hobbyking/store/37318HobbyKing_Plug_N_Play_Aircraft_Engine_Sound_Module_System.html?strSearch=sound

(nur zwei von vielen Beispielen)

Google mal nach "arduino RC soundsystem", da findest du sicher noch mehr.

Richtige Threads braucht man eigentlich nicht. Das macht erst auf dem Due wirklich Sinn. Auf dem AVR kann man das alles zeitgesteuert mit millis() machen. Man gibt an wie schnell eine gewisse Funktion dran kommen soll und die wird dann alle x ms aufgerufen. Dann darf man aber auch nirgends delay() verwenden oder Funktionen die blockieren (z.B. pulseIn() oder parseInt()).

hi,

schau bei ebay unter:

arduino mp3 sound

geh auf weltweit. da findest du günstig etliche module, die meist seriell angesprochen werden und den sound auf einer speicherkarte haben.

gruß stefan

  • ich bin mir eigentlich sicher -, dass der Arduino Soundwiedergabe, Lichsteuerung und vor allem Controllerauslesen nicht auf einmal schafft und der Sound nicht zu hören ist, weil die Wellen einfach zu wenig Frequenz haben.

Unwahrscheinlich!

Ich habe mir die zugehörige Lib mal angesehen/überflogen. Der Sound wird im Interruptbetrieb gesendet.

Wenn du alles richtig gemacht hättest, dann würde vielleicht das Hauptprogramm durch die vielen Interrupts langsamer, aber der Sound müsste spielen. Delay()s spielen keine Rolle.

Meine Glaskugel sagt: Du veränderst Timer1 im Hauptprogramm (oder ähnlich), und damit ist der Sound aus.