Go Down

Topic: Teddy Bear mp3 (Read 4 times) previous topic - next topic

IrgendJemand

Also wir haben die Datei von mp3 in wav umgewandelt und jetzt auf die Mikro SD Karte getan nachdem wir die mit FAT 16 formatiert haben (wir mussten sie halt zweiteilen weil sie zu groß war, aber es sollte ja eigentlich funktionieren, da es ja trotzdem FAT 16 ist).

Außerdem sind wir uns nicht sicher, wie man die Datei nennen muss, da wir sie ja 8 Zeichen lang machen sollten nen Punkt und nochmal 3 Zeichen aber wenn wir die Datei wibbly.wav nennen kommt ja wibbly.wav.wav raus. Sollen wir das erste .wav dann einfach weglassen?

Und die SD Karte haben wir ins Ethernetshield getan und den Lautsprecher und den Knopf angeschlossen so dass zumindets die Melodie schonmal funktioniert.

Aber wir verstehen nicht, wie man den Arduino zum Abspielen der Datei bringt und wie man das mit den ganzen Librarys macht.

IrgendJemand

Also das Programm spielt jetzt halt die Melodie auf Knopfdruck aber weiter kommen wir nicht, da wir das mit den Libraries nicht verstehen.
Die Noten sind ja in der Datei "pitches", die wir mit hochgeladen haben.
Code: [Select]

/*
  Spielt nach Tastendruck die Melodie von Levels (Avicii).
*/
// Einfügen der Notenliste:
#include "pitches.h"

// Noten der Medlodie:
int melody[] = {
  NOTE_CS5, NOTE_B4, NOTE_GS4, NOTE_FS4, NOTE_E4, NOTE_E4, 0, NOTE_E4, NOTE_E4, NOTE_E4, NOTE_E4, NOTE_DS4, NOTE_DS4, NOTE_E4, NOTE_E4, 0,
  NOTE_CS5, NOTE_B4, NOTE_GS4, NOTE_FS4, NOTE_E4, NOTE_E4, 0, NOTE_E4, NOTE_E4, NOTE_E4, NOTE_E4, NOTE_CS4, NOTE_CS4, NOTE_B3, NOTE_B3, 0};

// Notenlänge: 4 = Viertelnote, 8 = Achtelnote, etc.:
int noteDurations[] = {
  4, 4, 4, 4 ,4 ,4 ,4 ,4 ,4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4};

void setup() {
}
void loop()
{
int messwert = analogRead(0);
if(messwert < 500) // Wenn der Konpf gedrückt wird wird die Melodie abgespielt.
{
    for (int thisNote = 0; thisNote < 32; thisNote++) {
     
      int noteDuration = 700/noteDurations[thisNote];
      tone(8, melody[thisNote],noteDuration);
     
      int pauseBetweenNotes = noteDuration * 1.30;
      delay(pauseBetweenNotes);
      noTone(8);
    }
  }
}


sth77

Du wurdest doch auf diese Bibliothek verwiesen: http://hackerspace-ffm.de/wiki/index.php?title=SimpleSDAudio
Dort gibt es das Beispiel BareMinimum.ino:
Code: [Select]
/*
Simple SD Audio bare minimum example, plays file EXAMPLE.AFM from root folder of SD card.

This example shows how to use the SimpleSDAudio library for audio playback.
You need:
- An Arduino with ATmega168/ATmega368 or better
- An SD-Card connected to Arduinos SPI port (many shields will do)
   -> copy EXAMPLE.AFM on freshly formated SD card into root folder
- A passive loudspeaker and resistor or better: active speakers (then stereo output will be possible)

Audio signal output is at the following pin:
- Arduino with ATmega168/328   (many non-mega Arduinos): Pin 9
- Arduino with ATmega1280/2560 (many mega Arduinos)    : Pin 44

Using passive speaker:
    Audio-Pin --- -[100 Ohm resistor]- ---- Speaker ---- GND
   
Using amplifier / active speaker / line-in etc.:
    Audio-Pin --||--------------[10k resistor]----+----[1k resistor]---- GND
              100nF capacitor                   to amp

See SimpleSDAudio.h or our website for more information:
http://www.hackerspace-ffm.de/wiki/index.php?title=SimpleSDAudio

created  23 Jun 2012 by Lutz Lisseck
*/
#include <SimpleSDAudio.h>

void setup()
{
  // If your SD card CS-Pin is not at Pin 4, enable and adapt the following line:
  // SdPlay.setSDCSPin(10);
 
  // Init SdPlay and set audio mode
  if (!SdPlay.init(SSDA_MODE_FULLRATE | SSDA_MODE_MONO)) {
    while(1); // Error while initialization of SD card -> stop.
  }
 
  // Select file to play
  if(!SdPlay.setFile("EXAMPLE.AFM")) {
    while(1); // Error file not found -> stop.
  }   
 
  // Start playback
  SdPlay.play();
 
  // Let the worker work until playback is finished
  while(!SdPlay.isStopped()) {
    SdPlay.worker();
  }
}

void loop(void) {
}

Damit ist echt nichts anzufangen?
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

jurs


Also wir haben die Datei von mp3 in wav umgewandelt


In WAV umgewandelt reicht nicht aus. Ihr müsst die Datei auch noch in eine 8-Bit WAV mit bestimmter Datenrate umwandeln, das Kommandozeilenprogramm "sox" dafür ist gleich mit dabei.


und jetzt auf die Mikro SD Karte getan nachdem wir die mit FAT 16 formatiert haben (wir mussten sie halt zweiteilen weil sie zu groß war, aber es sollte ja eigentlich funktionieren, da es ja trotzdem FAT 16 ist).


FALSCH!
Nehmt eine alte 2GB Speicherkarte und formatiert sie FAT16!
Und KEINE PARTITIONIERUNG der Karte in verschiedene Bereiche, damit kann die Lib nicht umgehen!


Außerdem sind wir uns nicht sicher, wie man die Datei nennen muss, da wir sie ja 8 Zeichen lang machen sollten nen Punkt und nochmal 3 Zeichen aber wenn wir die Datei wibbly.wav nennen kommt ja wibbly.wav.wav raus. Sollen wir das erste .wav dann einfach weglassen?


Ja. "wibbly.wav" ist als 8.3 Dateiname vollkommen in Ordnung und kann so von einer NTFS-formatierten Platte problemlos auf eine FAT16 formatierte Speicherkarte rüberkopiert werden.


Lautsprecher und den Knopf angeschlossen so dass zumindets die Melodie schonmal funktioniert.


Na bravo, dann habt ihr ja wenigstens eine Notlösung mit Tönen, selbst wenn ihr das mit der WAV-Datei nicht mehr rechtzeitig hinbekommt.


Aber wir verstehen nicht, wie man den Arduino zum Abspielen der Datei bringt und wie man das mit den ganzen Librarys macht.


Die Library wird so (mit derselben Ordnerstruktur) wie sie aus dem Archiv entpackt wird, in das Arduino libraries Verzeichnis reinkopiert. Beim nächsten Arduino-Programmstart kennt Arduino dann die Library und ihr könnt sie in Eurem Programm verwenden.

Addi

Hier ein Tipp we ihr es nicht mit den Bauteilen von euch arbeiten müsst:
Mit dem MSP 430 kann man über einen Piezolautsprecher die Töne ausgeben:
http://www.youtube.com/watch?v=CGEkj41XQNI

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

Go Up