Я использую Arduino VS1053 Musi c Player Library . Я не слишком знаком с кодом Arduino, и я работаю над проектом для друга с близким сроком. Я просто пытаюсь прокрутить список воспроизведения коротких звуковых файлов, когда пьезодатчик (Roland Drumpad) обнаружил соединение (piezoV) через 0,25. Вот этот фрагмент кода.
while (tracknum <= 47)
if (piezoV >= 0.10) {
Serial.println(piezoV);
// Serial.println(F("Playing track " + tracknum +""));
// String file = String(trackid) + String(tracknum) + String(ext);
String file = trackid + tracknum + ext;
Serial.println(file);
musicPlayer.playFullFile(file);
int tracknum = tracknum + 1;
}
Причина, по которой l oop: Имеется 47 дорожек, и я хочу, чтобы пэд остановился после того, как все 47 циклически пройдены .
К сожалению, когда я пытаюсь запустить этот код, я получаю следующую ошибку:
no matching function for call to 'Adafruit_VS1053_FilePlayer::playFullFile(String)'
Вот весь мой код, если он помогает ответить на мой выпуск.
#include <SPI.h>
#include <Adafruit_VS1053.h>
#include <SD.h>
#include "string.h"
using namespace std;
// 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 =
// create breakout-example object!
Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS);
// create shield-example object!
//Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS);
void setup() {
const int PIEZO_PIN = A0;
int piezoADC = analogRead(PIEZO_PIN);
float piezoV = piezoADC / 1023.0 * 5.0;
String trackid = "/pad06";
int tracknum = 001;
String ext = ".mp3";
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"));
if (!SD.begin(CARDCS)) {
Serial.println(F("SD failed, or not present"));
while (1); // don't do anything more
}
// list files
// printDirectory(SD.open("/"), 0);
// 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
while (tracknum <= 47)
if (piezoV >= 0.10) {
Serial.println(piezoV);
// Serial.println(F("Playing track " + tracknum +""));
// String file = String(trackid) + String(tracknum) + String(ext);
String file = trackid + String(tracknum) + ext;
Serial.println(file);
musicPlayer.playFullFile(file);
int tracknum = tracknum + 1;
}
// 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) {
delay(10); // we're done! do nothing...
}
}
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);
}
}
Заранее спасибо.