问题描述
这是我写的代码: 我相应地设置了给定的引脚,我检查了超声波传感器、晶体管和电阻器是否处于工作状态。 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);
但是,根据库中的示例,您不需要文件扩展名,但在这方面我可能是错误的。
先试试我的建议,然后报告你的结果