如何解决Arduino和TF迷你激光雷达传感器
我正在从事一个项目,我需要代码中的帮助,希望有人可以帮助我解决我面临的问题。
我的问题是我将三个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 举报,一经查实,本站将立刻删除。