每当按下按钮但没有成功时,我一直在努力使Arduino播放样本(加载到SD卡上并连接到Arduino Uno板)。当我运行代码时,它不等待按钮被按下,而是立即开始播放样本。
它甚至都不知道已经按下了按钮。但是,当我只是让它通过蜂鸣器播放不同的频率时,这种方法效果很好。但是,一旦我切换到wav样本而不是基本频率,它就不会工作。
#include <SD.h> //Include the library.
#include <TMRpcm.h> //Include the library.
TMRpcm tmrpcm; //Creating a player object.
const int chipSelect = 4;
void setup()
{
pinMode(9,INPUT);
Serial.begin(9600); //Initializing serial port. Speed 9600.
if(!SD.begin(chipSelect)) //If the card is available.
{
Serial.println("SD fail"); //Write in the serial port "SD fail".
return; //Return.
}
Serial.println("SD working");
if(digitalRead(9)==1){
tmrpcm.play("transMono1.wav"); //Play music file
Serial.println("button 1 pressed");
}
}
void loop()
{
答案 0 :(得分:0)
您所有的代码都在setup
中,因此它将仅运行一次。如果您想多次检查按钮的状态,请尝试放置
if(digitalRead(9)==1){
tmrpcm.play("transMono1.wav"); //Play music file
Serial.println("button 1 pressed");
}
在loop()
中。
此外,在TMRPCM reference中,样本是异步播放的,因此,在再次尝试播放之前,您还需要检查之前的样本是否已完成。该库为您提供了一种检查方法:
if(digitalRead(9)==1 && !tmrpcm.isPlaying()) //check if button is pressed, and nothing is playing.
{
tmrpcm.play("transMono1.wav"); //Play music file
Serial.println("button 1 pressed");
}