我在使用 arduino 和存储卡和扬声器时遇到一些问题,请帮助我

问题描述

这是我写的代码: 我相应地设置了给定的引脚,我检查了超声波传感器、晶体管和电阻器是否处于工作状态。 CS(在代码中表示为芯片组)固定在引脚 10,电阻连接到 9,该电阻连接到晶体管,然后连接到扬声器。

#define trigPin1 3
#define echoPin1 2
#define trigPin2 4
#define echoPin2 5
#define trigPin3 7
#define echoPin3 8
#define cs 10
#include "SD.h"
#include "TMRpcm.h"
#include "SPI.h"

TMRpcm tmrpcm;


long duration,distance,RightSensor,BackSensor,FrontSensor,LeftSensor;

void setup()
{
  tmrpcm.speakerPin = 9;
  Serial.begin(9600);
  if (!SD.begin(cs))
  {
    Serial.println("SD fail");
  }
  pinMode(trigPin1,OUTPUT);
  pinMode(echoPin1,INPUT);
  pinMode(trigPin2,OUTPUT);
  pinMode(echoPin2,INPUT);
  pinMode(trigPin3,OUTPUT);
  pinMode(echoPin3,INPUT);
}

void loop() {
  SonarSensor(trigPin1,echoPin1);
  RightSensor = distance;
  tmrpcm.setVolume(6);
  if (RightSensor > 10)
  {
    tmrpcm.play("RightFormatted.wav");
  }
  
  SonarSensor(trigPin2,echoPin2);
  LeftSensor = distance;
  if (LeftSensor > 10)
  {
    tmrpcm.play("LeftFormatted.wav");
  }
 
  SonarSensor(trigPin3,echoPin3);
  FrontSensor = distance;
  if (FrontSensor > 10)
  {
    tmrpcm.play("FrontFormatted.wav");
  }
  

  Serial.println(LeftSensor);
  Serial.println(" - ");
  Serial.print(FrontSensor);
  Serial.print(" - ");
  Serial.println(RightSensor);
}

void SonarSensor(int trigPin,int echoPin)
{
  digitalWrite(trigPin,LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin,LOW);
  duration = pulseIn(echoPin,HIGH);
  distance = (duration / 2) / 29.1;

}

我得到的错误是: Error of this code

解决方法

不要直接在 .play 方法中输入 .wav 文件的名称,而是创建一个 const char 变量来分配名称:

const char* audio1= "RightFormatted.wav";

然后你可以把它用作:#

tmrpcm.play(audio1);

但是,根据库中的示例,您不需要文件扩展名,但在这方面我可能是错误的。

先试试我的建议,然后报告你的结果