Problem mit Adafruit Musicmaker Shield

Hallo alle :slight_smile:

Vielleicht kann mir jemand von euch helfen.
Ich habe vorher noch nie mit einem Shield gearbeitet…

Also:
Ich habe mir dieses ADAFRUIT Mp3 Shield gekauft und bin auch allen Anweisungen gefolgt.

Meins sieht jetzt so aus:
BILD

ZU den Verbindungssteckern habe ich zus√§tzliche Buchsen auf die ‚Äúzweite Reihe‚ÄĚ gel√∂tet, diese m√∂chte ich sp√§ter verwenden‚Ķ

Um das Shield auszuprobieren, habe ich die Library von Adafruit runtergeladen und installiert.
Der Test Code lässt sich auch hochladen, nur findet mein Arduino das Shield nicht.

hier ist der Code: (geändert, wie in der Anleitung verlangt)

/*************************************************** 
  This is an example for the Adafruit VS1053 Codec Breakout

  Designed specifically to work with the Adafruit VS1053 Codec Breakout 
  ----> https://www.adafruit.com/products/1381

  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ****************************************************/

// include SPI, MP3 and SD libraries
#include <SPI.h>
#include <Adafruit_VS1053.h>
#include <SD.h>

// define the pins used
//#define CLK 13       // SPI Clock, shared with SD card
//#define MISO 12      // Input data, from VS1053/SD card
//#define MOSI 11      // Output data, to VS1053/SD card
// Connect CLK, MISO and MOSI to hardware SPI pins. 
// See http://arduino.cc/en/Reference/SPI "Connections"

// These are the pins used for the breakout example
#define BREAKOUT_RESET  9      // VS1053 reset pin (output)
#define BREAKOUT_CS     10     // VS1053 chip select pin (output)
#define BREAKOUT_DCS    8      // VS1053 Data/command select pin (output)
// These are the pins used for the music maker shield
#define SHIELD_RESET  -1      // VS1053 reset pin (unused!)
#define SHIELD_CS     7      // VS1053 chip select pin (output)
#define SHIELD_DCS    6      // VS1053 Data/command select pin (output)

// These are common pins between breakout and shield
#define CARDCS 4     // Card chip select pin
// DREQ should be an Int pin, see http://arduino.cc/en/Reference/attachInterrupt
#define DREQ 3       // VS1053 Data request, ideally an Interrupt pin

Adafruit_VS1053_FilePlayer musicPlayer = 
  
  Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS);
  
void setup() {
  Serial.begin(9600);
  Serial.println("Adafruit VS1053 Simple Test");

  if (! musicPlayer.begin()) { // initialise the music player
     Serial.println(F("Couldn't find VS1053, do you have the right pins defined?"));
     while (1);
  }
  Serial.println(F("VS1053 found"));
  
  SD.begin(CARDCS);    // initialise the SD card
  
  // Set volume for left, right channels. lower numbers == louder volume!
  musicPlayer.setVolume(20,20);

  // Timer interrupts are not suggested, better to use DREQ interrupt!
  //musicPlayer.useInterrupt(VS1053_FILEPLAYER_TIMER0_INT); // timer int

  // If DREQ is on an interrupt pin (on uno, #2 or #3) we can do background
  // audio playing
  musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT);  // DREQ int
  
  // Play one file, don't return until complete
  Serial.println(F("Playing track 001"));
  musicPlayer.playFullFile("track001.mp3");
  // Play another file in the background, REQUIRES interrupts!
  Serial.println(F("Playing track 002"));
  musicPlayer.startPlayingFile("track002.mp3");
}

void loop() {
  // File is playing in the background
  if (musicPlayer.stopped()) {
    Serial.println("Done playing music");
    while (1);
  }
  if (Serial.available()) {
    char c = Serial.read();
    
    // if we get an 's' on the serial console, stop!
    if (c == 's') {
      musicPlayer.stopPlaying();
    }
    
    // if we get an 'p' on the serial console, pause/unpause!
    if (c == 'p') {
      if (! musicPlayer.paused()) {
        Serial.println("Paused");
        musicPlayer.pausePlaying(true);
      } else { 
        Serial.println("Resumed");
        musicPlayer.pausePlaying(false);
      }
    }
  }

  delay(100);
}

Arduino gibt mir das aus:
Adafruit VS1053 Simple Test
Couldn’t find VS1053, do you have the right pins defined?

Ich stehe total auf dem Schlauch. :confused:
Gibt es alternative Pins? Oder habe ich was √ľbersehen? Oder liegt es an den Zusatz-Buchsen?

Vielen Dank schonmal. Ich hoffe irgendwer weiss was los ist.

DANKE!
LG :slight_smile:

HeyKe: hier ist der Code: (geändert, wie in der Anleitung verlangt)

Wenn es nicht funktioniert und Du beim Einl√∂ten Deiner zweiten Reihe Headerleisten keine Kurzschl√ľsse in Dein Shield reingel√∂tet hast, dann hast Du das mit dem √Ąndern des Codes offenbar vergeigt.

Der von Dir gepostete Code ist laut Kommentar im Sketch f√ľr dieses VS1053 Codec + MicroSD Breakout Board

Gibt es zum Testen f√ľr Dein Shield keinen Code, den Du einfach per Copy-and-Paste √ľbernehmen kannst, ohne dass Du irgendwelche Ahnung haben und am Code √Ąnderungen vornehmen musst?

Nur Copy-and-Paste ist ohne Ahnung zu haben viel einfacher als Copy-and-Paste UND Ahnung haben UND den Code ändern.

Hallo jurs.

Ich weiss, dass er eigentlich f√ľr ein anderes Shield ist. Deswegen musste er ge√§ndert werden:

In der Anleitung im Tutorial von Adafruit steht: ¬ĽWe originally wrote the library for use with the Breakout board. Since the pinout's a little different we just need to make a minor change. Find this line:

Adafruit_VS1053_FilePlayer musicPlayer = 
  // create breakout-example object!
  Adafruit_VS1053_FilePlayer(BREAKOUT_RESET, BREAKOUT_CS, BREAKOUT_DCS, DREQ, CARDCS);
  // create shield-example object!
  //Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS);

and change it to:

Adafruit_VS1053_FilePlayer musicPlayer = 
  // create breakout-example object!
  //Adafruit_VS1053_FilePlayer(BREAKOUT_RESET, BREAKOUT_CS, BREAKOUT_DCS, DREQ, CARDCS);
  // create shield-example object!
  Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS);

Das habe ich ja gemacht… Funktioniert aber nicht… Der Code war im Library Ordner mit dabei…

Sry, ich weiss. Copy Paste ist nicht das Beste, aber hier ist er direkt vom Hersteller und ich habe mich sehr genau an die Anleitung gehalten…

THX LG

HeyKe: ich habe mich sehr genau an die Anleitung gehalten…

OK, die notwendige √Ąnderung im Code sieht ja tats√§chlich minimal aus: Einfach einen Aufruf mit Pins f√ľr das Breakout-Board in einen Kommentar setzen und stattdessen die Kommentarstriche vor dem Aufruf mit den Pins f√ľr das Shield entfernen. Das k√∂nnte man ggf. auch hinbekommen, ohne gro√ü Ahnung zu haben, was sich dabei √§ndert. Also gehe ich mal davon aus, Du hast die Code√§nderung korrekt durchgef√ľhrt.

So aus der Entfernung ist es trotzdem schwierig zu raten, was Du sonst noch falsch gemacht haben könntest.

In Frage k√§me zum Beispiel: Falsches Board. So wie Du das Shield zusammengel√∂tet hast, ist es f√ľr einen "Arduino UNO" Steckt das Shield bei Dir auch auf einem Arduino UNO? Oder auf einem anderen Board?

Die zweite Sache, die Du √ľberpr√ľfen kannst, w√§re die Steckverbindung des 6-poligen ISP-Headers. Das Shield mu√ü nicht nur mit allen Pins der seitlichen Headerleisten korrekt auf dem Board sitzen, sondern auch die Pins des 6-poligen ISP-Headers m√ľssen korrekt gesteckt sein, insbesondere tief genug.

Durch Bauteiletoleranzen und zu lange seitliche Headerstife, oder falsches Einlöten der seitlichen Header oder des 6-poligen ISP-Headers, oder einen zu kurzen ISP-Headeranschluß kann es passieren, dass nach dem Aufstecken zwar die seitlichen Headerstifte Verbindung haben, aber nicht die 6 Pins des ISP-Headers. Kannst Du es verifizieren, dass auch der 6-polige ISP-Header mit allen Pins einwandfreie Verbindung zwischen Board und Shield herstellt?

Hallo HeyKe, die Zeilen kannst Du auskommentieren:

// These are the pins used for the breakout example
// #define BREAKOUT_RESET  9      // VS1053 reset pin (output)
// #define BREAKOUT_CS     10     // VS1053 chip select pin (output)
// #define BREAKOUT_DCS    8      // VS1053 Data/command select pin (output)

Auf Deinem Foto oben links vor dem Befestigungsloch befinden sich die drei mit ICSP beschrifteten L√∂tbr√ľcken MISO, SCK und MOSI, die ich mit einem L√∂tklecks gebr√ľckt habe.

Ich dr√ľcke die Daumen :)

Hallo.

danke schonmal f√ľr die Antworten.

@jurs: Danke :) Shield sitzt auf einem Uno. Pins stecken bis zum Anschlag drin. Der ICPS Header ist auch verbunden. Habs nochmal etwas fester gedr√ľckt‚Ķ Habe auch den Header benutzt, der mitgeliefert wurde.

@agmue: Danke :) Hab es auskommentiert. Ist es n√∂tig die L√∂tbr√ľcken zu √ľberbr√ľcken?

Ich habe mal eine Verständnisfrage :) Warum werden in diesem Code die Pins 7 und 6 angesprochen? Das Shield steckt ja in allen Pins. Wird das durch die Library oder das Shield an sich vorgegeben? Oder könnte man das auch ändern?

Danke euch beiden auf jeden Fall f√ľr eure Hilfe! LG

HeyKe: @agmue: Ist es n√∂tig die L√∂tbr√ľcken zu √ľberbr√ľcken?

Ich habe geschaut, was ich anders gemacht habe, da sind mir die L√∂tbr√ľcken aufgefallen, die ich geschlossen habe. Wenn ich mir nun erneut die Dokumentation ansehe, finde ich aber keine Begr√ľndung daf√ľr. ::)

HeyKe: Ich habe mal eine Verständnisfrage :) Warum werden in diesem Code die Pins 7 und 6 angesprochen? Das Shield steckt ja in allen Pins. Wird das durch die Library oder das Shield an sich vorgegeben? Oder könnte man das auch ändern?

Das Shield verbindet alle Pins vom UNO nach oben, so da√ü noch ein weiteres Shield dar√ľber gesteckt werden kann. F√ľr mich war das die Rettung. Einige der Pins werden f√ľr das Shield ben√∂tigt und je nach Shield optional verwendet oder fest verdrahtet. Leiterbahnen kratzen geht nat√ľrlich auch. Im Sketch ist es in diesem Fall transparent:

#define SHIELD_CS     7
#define SHIELD_DCS    6
#define CARDCS 4
#define DREQ 3