Forum: Mikrocontroller und Digitale Elektronik Zufälliges Wave-File abspielen mit Arduino


von Lukas E. (lukas_e147)


Lesenswert?

Hi,

ich stelle mich momentan ein bisschen doof an.
Es geht im Prinzip nur darum, auf Knopfdruck mit einem Microcontroller, 
ich hatte mir einen Arduino Nano ausgesucht, ein zufälliges WAV-File von 
der SD-Karte abzuspielen. Der Zugriff auf die SD-Karte funktioniert 
einwandfrei, aber bei der Wiedergabe des Files habe ich ein Problem. Ich 
habe die TMRpcm Bibliothek ausprobiert, aber am PWM-Pin kommt damit gar 
nichts raus, ich nutze den Example-Code, auf der seriellen Konsole 
allerdings sagt er, er würde abspielen... Die SimpleSDAudio Bibliothek 
spielt mit dem Beispielscode zwar etwas ab, allerdings ist das Sound 
File viel zu schnell und ich höre sehr viel Rauschen, das File selbst 
ist kaum zu hören, egal ob ich einen kleinen Verstärler mit LM386 
dazwischen schalte, oder nicht..


Vielleicht hat jemand dazu Ideen? Oder Alternativen? Ich habe vom 
DFPlayer Modul gehört, ist das eine Alternative? Kann das auch zufällige 
Files abspielen?

LG

Lukas

von leo (Gast)


Lesenswert?

Lukas E. schrieb:
> ein zufälliges WAV-File von
> der SD-Karte abzuspielen.

Du wirfst Prioritaeten durcheienander.
1) WAV abspielen:
e.g. 
https://www.c-sharpcorner.com/article/audio-play-using-sd-card-module-and-arduino/
2) zufaellig ... folgt wenn 1) geht, e.g. "shuffle sd title"

leo

von Lukas E. (lukas_e147)


Lesenswert?

Den Zufall hatte ich bereits hinten angestellt, mit dem Code aus dem 
Post und auch dem Beispielscode, der der Library beiliegt, bekomme ich 
keinen Ton aus dem Arduino, ich habe auch mal einen anderen Arduino 
probiert, falls der andere kaputt sein sollte, das ändert aber nichts.

von leo (Gast)


Lesenswert?

Lukas E. schrieb:
> bekomme ich
> keinen Ton aus dem Arduino,

Ja dann wuerde ich (noch) mal die HW checken.

leo

von Lukas E. (lukas_e147)


Lesenswert?

Ich habe zwei Arduinos getestet, die SD Karte funktioniert und kann 
angesprochen werden, die Directory kann gelistet werden. Selbst wenn ich 
direkt das Scope an den PWM Pin halte, kommt nichts raus ...

von Stefan F. (Gast)


Lesenswert?

Erwartest du jetzt Hilfe für ein nicht genanntes Programm? Wir sind 
keine Hellseher. Zeige uns dein Programm.

von Lukas E. (lukas_e147)


Lesenswert?

Es geht um den Beispielscode für die TMRpcm Bibliothek, hier ist der 
Code:
1
#include <SD.h>                      // need to include the SD library
2
//#define SD_ChipSelectPin 53  //example uses hardware SS pin 53 on Mega2560
3
#define SD_ChipSelectPin 10  //using digital pin 4 on arduino nano 328, can use other pins
4
#include <TMRpcm.h>           //  also need to include this library...
5
#include <SPI.h>
6
7
TMRpcm tmrpcm;   // create an object for use in this sketch
8
9
10
void setup(){
11
12
  tmrpcm.speakerPin = 6; //5,6,11 or 46 on Mega, 9 on Uno, Nano, etc
13
14
  Serial.begin(9600);
15
  if (!SD.begin(SD_ChipSelectPin)) {  // see if the card is present and can be initialized:
16
    Serial.println("SD fail");  
17
    return;   // don't do anything more if not
18
  }
19
  tmrpcm.play("000"); //the sound file "000" will play each time the arduino powers up, or is reset
20
}
21
22
23
24
void loop(){  
25
26
  if(Serial.available()){    
27
    if(Serial.read() == 'p'){ //send the letter p over the serial monitor to start playback
28
      tmrpcm.play("000");
29
    }
30
  }
31
32
}

von Karl K. (karl2go)


Lesenswert?

Das soll gehen? Mit einem Atmega328?

Ich habs mit einem Tiny861 mit Hig Frequency PWM gemacht und schon das 
war grenzwertig. Aber mit einem ATmega, der max. 30kHz PWM Frequenz bei 
8bit hat?

von Stefan F. (Gast)


Lesenswert?

An dem Programm gibt es nichts aufregendes zu sehen. Ich würde mich 
daher an den Autor der Bibliothek wenden.

von leo (Gast)


Lesenswert?

Lukas E. schrieb:
> tmrpcm.speakerPin = 6; //5,6,11 or 46 on Mega, 9 on Uno, Nano, etc

Ich wuerde mal die (vom Autor hoffentlich getesteten) Default-Pins fuer 
PWM und SPI probieren.

leo

von Lukas E. (lukas_e147)


Lesenswert?

Das hat nichts geändert, aber ich habe jetzt noch einen weiteren Arduino 
probiert, damit geht es. Die zwei anderen scheinen irgendwie einen an 
der Waffel gehabt zu haben...

Ich danke euch

Lukas

von Torsten (Gast)


Lesenswert?

Ich hatte kürzlich ein Problem, bei dem ich egal ob wav oder mp3 was 
angespielt habe, ein Knacksen vom DAC ausgegeben wurde. Gestreamt per 
Web gabs keine Probleme.

Ergebnis: Es lag an den Jumperwires zwischen uC und SD-Reader.

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
Noch kein Account? Hier anmelden.