按下按钮时在Arduino上播放WAV示例

时间:2019-04-25 11:33:31

标签: audio arduino sample

每当按下按钮但没有成功时,我一直在努力使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()
{

1 个答案:

答案 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");
  }