接线说明
- 各传感器的GND接arduino板载的GND
- 各传感器的VCC接arduino板载的5V
- 雷达的Echo — arduino的2
- 雷达的Trig — arduino的3
- 3色LED的R或G或B — arduino的4
- ASRPro的PB6(RX接收) — arduino的10
- ASRPro的PB5(TX发送) — arduino的11
源代码
/*
Arduino与ASR01语音识别模块的串口通讯实验
*/
#include <SoftwareSerial.h>
//倒车部分
const int TrigPin = 2;
const int EchoPin = 3;
float cm; //测量出来的距离
int inteval;
#define Buzzer 4 //有缘蜂鸣IO阵脚
int daocheFlag; //倒车开关标志
// 定义引脚
SoftwareSerial mySerial(10, 11); // RX, TX ,ASRPro 通信引脚
const int LedPin = 13; // led连接的引脚,作为LED灯的正极
String st = “”; //串口读取的字符数据的字符串变量
//初始化
void setup() {
//设置串口
mySerial.begin(9600); //ASRPro 通信,设置串口波特率9600
Serial.begin(9600); //串口调试
//设置灯
pinMode(LedPin, OUTPUT); //设置板载led,
//设置蜂鸣器
pinMode(Buzzer, OUTPUT); //蜂鸣器为IO输出
digitalWrite(Buzzer, HIGH); //蜂鸣器初始为不鸣叫,HIGH不鸣,LOW鸣
//设置倒车雷达
daocheFlag = 0;
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop() {
if (daocheFlag == 1) {
//倒车雷达检测
daocheDetect();
} else {
digitalWrite(Buzzer, HIGH);
}
//读取智能语音传输的内容
st = “”;
while (mySerial.available() > 0) { //当串口缓冲区有数据
st += char(mySerial.read()); //将缓冲区数据累加读入st
delay(2);
}
//读取的内容会有空格,需要去掉
st.trim();
//st为空
if (st.length() <= 0) { return; }
Serial.println(st);
if (st == “ledon”) digitalWrite(LedPin, HIGH); //st为“t001”则LedPin置高电平,即开灯
if (st == “ledoff”) digitalWrite(LedPin, LOW); //st为“t002”则LedPin置低电平,即关灯
if (st == “dcon”) daocheFlag = 1;
if (st == “dcoff”) daocheFlag = 0;
if (st == “hello”) { //st为“hello”则Led灯闪3下
for (int i = 0; i < 3; i++) {
digitalWrite(LedPin, HIGH);
delay(100);
digitalWrite(LedPin, LOW);
delay(100);
}
}
}
void daocheDetect() {
digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW); //通过这里控制超声波的发射
cm = pulseIn(EchoPin, HIGH) / 58; //将回波时间换算成cm
// cm = (int(cm * 100)) / 100; //保留两位小数
Serial.print(cm);
Serial.println(“cm”);
if (cm < 20) {
inteval = 100;
BuzzerDi();
} else if (cm > 20 && cm < 40) {
inteval = 300;
BuzzerDi();
} else if (cm > 40) {
delay(1000);
BuzzerDown();
}
}
//关闭蜂鸣器
void BuzzerDown() {
digitalWrite(13, LOW);
digitalWrite(Buzzer, HIGH); //蜂鸣器响
}
void BuzzerDi() {
digitalWrite(13, HIGH);
digitalWrite(Buzzer, LOW); //蜂鸣器响
delay(100);
digitalWrite(13, LOW);
digitalWrite(Buzzer, HIGH); //蜂鸣器关闭
delay(inteval); //延时inteval毫秒
}