问题描述
我正在从事一个项目,我需要代码中的帮助,希望有人可以帮助我解决我面临的问题。
我的问题是我将三个TF mini激光雷达传感器插入Arduino uno和Speaker。我要尝试做的是让每个传感器自己检测到一侧,例如“前”,“左”,“右”,然后使用扬声器给出有关对象的方向和距离的语音反馈。例如,如果第一个传感器说“前”在1m内检测到一个物体,我希望说话者通过说有一个物体从前接近1m来通知他们。
我只让一个传感器检测30厘米范围内的物体。那就是我所做的一切。请看一下我正在处理的代码。
这是代码,我应该在上面实现什么?
const int buttonPin = 2;
const int speakerPin = 3;
#include <SoftwareSerial.h>
#include "TFMini.h"
TFMini tfmini;
SoftwareSerial SerialTFMini(2,3); //The only value that matters here is the first one,2,Rx
// serial(1) = pin12=RX,pin13=TX
// serial(2) = pin16=RX green,pin17=TX white
void getTFminiData(int* distance,int* strength) {
static char i = 0; // setting a global charctrist data type
char j = 0; // setting a charctrist data type
int checksum = 0; // setting a intger data type
static int rx[9]; // setting a global intager array
if(SerialTFMini.available())
{
// Serial.println( "tfmini serial available" );
// storing the readed information in rx array
rx[i] = SerialTFMini.read();
if(rx[0] != 0x59) {
i = 0;
} else if(i == 1 && rx[1] != 0x59) {
i = 0;
} else if(i == 8) {
for(j = 0; j < 8; j++) {
checksum += rx[j];
}
if(rx[8] == (checksum % 256)) {
*distance = rx[2] + rx[3] * 256;
*strength = rx[4] + rx[5] * 256;
}
i = 0;
} else
{
i++;
}
}
}
void setup() {
pinMode(speakerPin,OUTPUT);
pinMode(buttonPin,INPUT);
// Step 1: Initialize hardware serial port (serial debug port)
Serial.begin(115200);
//wait for serial port to connect. Needed for native USB port only
while (!Serial);
Serial.println ("Initializing...");
// Step 2: Initialize the data rate for the SoftwareSerial port
SerialTFMini.begin(TFMINI_BAUdratE);
// Step 3: Initialize the TF Mini sensor
tfmini.begin(&SerialTFMini);
}
void loop()
{
int distance = 0;
int strength = 0;
int speaker = 0;
getTFminiData(&distance,&strength);
while(!distance) {
getTFminiData(&distance,&strength);
if(distance) {
// printing the follwing in the serial monitor
Serial.print(distance);
Serial.print("cm\t");
Serial.print("strength: ");
Serial.println(strength);
Serial.println(speaker);
if(speaker = HIGH);
}
}
delay(100);
if (distance < 20)
{
digitalWrite(speakerPin,HIGH);
}
else
{
digitalWrite(speakerPin,LOW);
}
delay(300);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)