Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将串行监视器(Arduino Uno)的变量更改为文本_C++_Arduino Uno_Arduino Ultra Sonic_Serial Monitor - Fatal编程技术网

C++ 将串行监视器(Arduino Uno)的变量更改为文本

C++ 将串行监视器(Arduino Uno)的变量更改为文本,c++,arduino-uno,arduino-ultra-sonic,serial-monitor,C++,Arduino Uno,Arduino Ultra Sonic,Serial Monitor,我使用的是HC-SR04超声波传感器,它显示距离,有两个if语句,如果低于0,则显示为0(该部分按预期工作),如果超过4米(距离变量为1厘米),则应显示“超出范围”,这就是我遇到问题的部分。这是完整的代码 const int TrigPin = 2; const int EchoPin = 3; float distance; void setup() { Serial.begin(9600); pinMode(TrigPin,OUTPUT); pinMode(EchoPi

我使用的是HC-SR04超声波传感器,它显示距离,有两个if语句,如果低于0,则显示为0(该部分按预期工作),如果超过4米(距离变量为1厘米),则应显示“超出范围”,这就是我遇到问题的部分。这是完整的代码

const int TrigPin = 2; 
const int EchoPin = 3; 
float distance;

void setup() {
  Serial.begin(9600); 

  pinMode(TrigPin,OUTPUT);
  pinMode(EchoPin,INPUT);
}

void loop () {

  digitalWrite(TrigPin,LOW);
  delayMicroseconds(2);
  digitalWrite(TrigPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin,LOW);

  distance = pulseIn(EchoPin,HIGH)/58.0; // divided by 58 to change into cm

  if(distance < 0) {
    distance = 0;
  } 
  if(distance > 400) {
    distance = "Out of range";
  }

  Serial.println(distance );
}
const int TrigPin=2;
常数int EchoPin=3;
浮动距离;
无效设置(){
Serial.begin(9600);
引脚模式(TrigPin,输出);
pinMode(EchoPin,输入);
}
空循环(){
数字写入(TrigPin,低电平);
延迟微秒(2);
数字写入(TrigPin,高);
延迟微秒(10);
数字写入(TrigPin,低电平);
距离=pulseIn(EchoPin,高)/58.0;//除以58可转换为厘米
如果(距离<0){
距离=0;
} 
如果(距离>400){
距离=“超出范围”;
}
串行打印LN(距离);
}

这将返回一个错误,该错误表示“无法将赋值中的‘const char[13]”转换为‘float’”(第26行),是否有方法在不使用新变量的情况下转换距离变量?(距离变量已经有另一个if语句)。我是这方面的初学者,所以解决方案可能非常简单,我只是不知道。

距离是一个浮点数,不能将浮点数设置为字符*

是否有任何方法可以在不使用新变量的情况下转换距离变量 变量


在声明变量为int之后,您不能将其转换为另一种数据类型。您可以做的是将其声明为char*(string),然后当您想将其设置为类似于0的数字时,将该数字转换为字符串。也就是说,如果您真的希望两者都有一个单独的变量。

distance
是一个浮点,您不能将浮点设置为char*

是否有任何方法可以在不使用新变量的情况下转换距离变量 变量

在声明变量为int之后,您不能将其转换为另一种数据类型。您可以做的是将其声明为char*(string),然后当您想将其设置为类似于0的数字时,将该数字转换为字符串。如果您真的希望两者都有一个单独的变量。

“有没有办法在不使用新变量的情况下转换距离变量?”您不需要转换它或使用另一个变量。不要更改距离,而是发送字符串:

void loop () {

  digitalWrite(TrigPin,LOW);
  delayMicroseconds(2);
  digitalWrite(TrigPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin,LOW);

  distance = pulseIn(EchoPin,HIGH)/58.0; // divided by 58 to change into cm

  // You don't need this check. pulseIn returns an unsigned long. It's always >= 0
  /*if(distance < 0) {
    distance = 0;
  } */
  if(distance > 400) {
    Serial.println("Out of range");
    return;
  }

  Serial.println(distance );
}
void循环(){
数字写入(TrigPin,低电平);
延迟微秒(2);
数字写入(TrigPin,高);
延迟微秒(10);
数字写入(TrigPin,低电平);
距离=pulseIn(EchoPin,高)/58.0;//除以58可转换为厘米
//您不需要此检查。pulseIn返回一个无符号的long。它总是>=0
/*如果(距离<0){
距离=0;
} */
如果(距离>400){
Serial.println(“超出范围”);
返回;
}
串行打印LN(距离);
}
与你的问题无关。您不需要检查距离是否为负值。返回一个
无符号长字符
。它总是非负的。

“有没有办法在不使用新变量的情况下转换距离变量?”您不需要转换它或使用其他变量。不要更改距离,而是发送字符串:

void loop () {

  digitalWrite(TrigPin,LOW);
  delayMicroseconds(2);
  digitalWrite(TrigPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin,LOW);

  distance = pulseIn(EchoPin,HIGH)/58.0; // divided by 58 to change into cm

  // You don't need this check. pulseIn returns an unsigned long. It's always >= 0
  /*if(distance < 0) {
    distance = 0;
  } */
  if(distance > 400) {
    Serial.println("Out of range");
    return;
  }

  Serial.println(distance );
}
void循环(){
数字写入(TrigPin,低电平);
延迟微秒(2);
数字写入(TrigPin,高);
延迟微秒(10);
数字写入(TrigPin,低电平);
距离=pulseIn(EchoPin,高)/58.0;//除以58可转换为厘米
//您不需要此检查。pulseIn返回一个无符号的long。它总是>=0
/*如果(距离<0){
距离=0;
} */
如果(距离>400){
Serial.println(“超出范围”);
返回;
}
串行打印LN(距离);
}

与你的问题无关。您不需要检查距离是否为负值。返回一个
无符号长字符
。它总是非负的。

在哪一行诊断该错误?如果您引用完整的错误,则会包括在内。在哪一行诊断该错误?如果你引用完整的错误,那就包括在内了。