C++ 将多个TFMini传感器连接到Arduino uno

C++ 将多个TFMini传感器连接到Arduino uno,c++,arduino-uno,sensors,C++,Arduino Uno,Sensors,我需要帮助获得每个TFMini激光雷达传感器我必须测量距离,每个传感器测量不同的距离。我一共有三个传感器 在这段代码中,当我运行它并打开串行监视器时,它不会为我测量任何距离。它只打印“所有距离单位为厘米” 提前谢谢这里是代码 #include<SoftwareSerial.h> #include<TFMini.h> #include "Talkie.h" #include "Vocab_US_Large.h" #include &

我需要帮助获得每个TFMini激光雷达传感器我必须测量距离,每个传感器测量不同的距离。我一共有三个传感器

在这段代码中,当我运行它并打开串行监视器时,它不会为我测量任何距离。它只打印“所有距离单位为厘米”

提前谢谢这里是代码


#include<SoftwareSerial.h>
#include<TFMini.h>
#include "Talkie.h"
#include "Vocab_US_Large.h"
#include "Vocab_Special.h"
#include "Vocab_US_TI99.h"
#include "TalkieUtils.h"

//Declaring variables and constants
TFMini TFFront;
TFMini TFRight;
TFMini TFLeft;
Talkie voice;                   //PIN 3 is by default the output for the speaker
SoftwareSerial SRight (4,5);    //(RX, TX)
SoftwareSerial SFront (6,7);    //(RX, TX)
SoftwareSerial SLeft (8,9);     //(RX, TX)

int TFBaudRate = 115200;
int USBBaudRate = 9600;
uint16_t threshold_distance = 100;       //Threshold distance in "cm"; speak only when any object is nearer than this distance

void setup() 
{
  //Initializing Baud Rates
  Serial.begin (USBBaudRate);
  while(!Serial);                     //Wait for USB Serial Port to connect
  Serial.println("Starting ......");
  SFront.begin (TFBaudRate);
  delay(50);
  SRight.begin (TFBaudRate);
  delay(50);
  SLeft.begin (TFBaudRate);
  delay(50);

  //Initializing TFMini Sensors
  TFFront.begin(&SFront);
  delay(100);
  TFRight.begin(&SRight);
  delay(100);
  TFLeft.begin(&SLeft);
  delay(100);  
}

void loop() 
{ 
  uint16_t Distances[3]={0,0,0};  //Initializing a blank array to store the distances of each side in each iteration
  Serial.println("All distances are in cm");

  //Getting and storing the distance from each side
  Distances[0] = TFFront.getDistance();
  Serial.print ("Front distance: ");
  Serial.println (Distances[0]);
  delay(50);
  Distances[1] = TFRight.getDistance();
  Serial.print ("Right distance: ");
  Serial.println (Distances[1]);
  delay(50);
  Distances[2] = TFLeft.getDistance();
  Serial.print ("Left distance: ");
  Serial.println (Distances[2]);
  delay(50);

  //Checking if another object is nearer than our set threshold and speaking
  if(Distances[0] < threshold_distance)    //Front Sensor
  {
    int dist_m0 = Distances[0]/100;
    voice.say(spt_SOME);
    voice.say(spt_THING);
    voice.say(spt_IN);
    voice.say(spt_FRONT);
    voice.say(sp2_AT);
    sayQFloat(&voice, dist_m0, 2, true, true);
    voice.say(sp2_METER);
    delay (100);
  }

  if(Distances[1] < threshold_distance)    //Right Sensor
  {
    int dist_m1 = Distances[1]/100;
    voice.say(spt_SOME);
    voice.say(spt_THING);
    voice.say(spt_ON);
    voice.say(spt_RIGHT);
    voice.say(sp2_AT);
    sayQFloat(&voice, dist_m1, 2, true, true);
    voice.say(sp2_METER);
    delay (100);
  }

  if(Distances[2] < threshold_distance)    //Left Sensor
  {
    int dist_m2 = Distances[2]/100;
    voice.say(spt_SOME);
    voice.say(spt_THING);
    voice.say(spt_ON);
    voice.say(spt_LEFT);
    voice.say(sp2_AT);
    sayQFloat(&voice, dist_m2, 2, true, true);
    voice.say(sp2_METER);
    delay (100);
  }  
}

#包括
#包括
#包括“Talkie.h”
#包括“Vocab_US_Large.h”
#包括“Vocab_Special.h”
#包括“Vocab_US_TI99.h”
#包括“TalkieUtils.h”
//声明变量和常量
TF微型TF前端;
TF权利;
TFMini-TFLeft;
有声说话//引脚3默认为扬声器的输出
软件串行SRight(4,5)//(接收、发送)
软件序列SFront(6,7)//(接收、发送)
软件序列SLeft(8,9)//(接收、发送)
int-TFBaudRate=115200;
int USBBaudRate=9600;
uint16\u t阈值\u距离=100//阈值距离,单位为“cm”;仅当任何物体离此距离较近时才说话
无效设置()
{
//初始化波特率
Serial.begin(USBBaudRate);
while(!Serial);//等待USB串行端口连接
Serial.println(“开始……”);
SFront.begin(TF波特率);
延迟(50);
SRight.begin(TF波特率);
延迟(50);
SLeft.begin(TF波特率);
延迟(50);
//初始化微型传感器
TFFront.begin(&sffront);
延迟(100);
t右键。开始(&S右键);
延迟(100);
TFLeft.开始(&SLeft);
延迟(100);
}
void循环()
{ 
uint16_t distance[3]={0,0,0};//初始化空白数组以存储每次迭代中每边的距离
Serial.println(“所有距离均以厘米为单位”);
//获取并存储与每一侧的距离
距离[0]=TFFront.getDistance();
Serial.print(“前端距离:”);
Serial.println(距离[0]);
延迟(50);
距离[1]=TFRight.getDistance();
Serial.print(“右距离:”);
Serial.println(距离[1]);
延迟(50);
距离[2]=TFLeft.getDistance();
Serial.print(“左距离:”);
Serial.println(距离[2]);
延迟(50);
//检查另一个物体是否比我们设定的阈值更近,然后说话
if(距离[0]<阈值距离)//前传感器
{
int dist_m0=距离[0]/100;
声音。说(一些);
声音。说(spt_事物);
声音。说(spt_IN);
声音。说(spt_前面);
声音。说(sp2_AT);
sayQFloat(和语音,dist_m0,2,true,true);
声音。说(sp2_米);
延迟(100);
}
if(距离[1]<阈值距离)//右传感器
{
int dist_m1=距离[1]/100;
声音。说(一些);
声音。说(spt_事物);
声音。说(spt_ON);
声音。说(右图);
声音。说(sp2_AT);
sayQFloat(和voice,dist_m1,2,true,true);
声音。说(sp2_米);
延迟(100);
}
if(距离[2]<阈值距离)//左传感器
{
int dist_m2=距离[2]/100;
声音。说(一些);
声音。说(spt_事物);
声音。说(spt_ON);
声音。说(spt_左);
声音。说(sp2_AT);
sayQFloat(和语音,dist_m2,2,true,true);
声音。说(sp2_米);
延迟(100);
}  
}

int-TFBaudRate=115200启用编译器警告并读取它们。另外,这与Python和C有什么关系?1-同样的事情不会发生。2-它不必与Python和C做任何事情!!那么你为什么要使用这些标签呢?Arduino是一个过时的8位标签,在这样的旧系统上,
int
是16位。因此,不能将值115200存储在
int
中。