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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...