如何调用从VL53LOX读取的值并将其存储到寄存器?

时间:2019-03-27 21:43:27

标签: arduino-c++

我有VL53LOX连接到arduino D1,我使用代码在IDE的示例中找到它(如下所示)。它需要通过Modbus协议将该值读取到PLC。电路读取距离成功,但是当plc连接到arduino D1时冻结,或者当plc连接到arduino D1时串行停止读取值。 我有VL53LOX连接到arduino D1,我使用代码在IDE的示例中找到它(如下所示)。它需要通过Modbus协议将此值读取到PLC。电路读取距离成功,但是当plc连接到arduino D1时冻结,或者当plc连接到arduino D1时串行停止读取值。 通过ESP8266将超声波传感器HC-SR04M与PLC连接时遇到相同的问题,我通过使用命令右边的function distance()解决了该问题 MBHoldingRegister [6] = measure.RangeMilliMeter; 而不是使用距离(可在Serial.println(distance)中找到) 现在代码不同了
熟练掌握编程知识

#include "Adafruit_VL53L0X.h"

Adafruit_VL53L0X lox = Adafruit_VL53L0X();

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

  // wait until serial port opens for native USB devices
  while (! Serial) {
    delay(1);
  }

  Serial.println("Adafruit VL53L0X test");
  if (!lox.begin()) {
    Serial.println(F("Failed to boot VL53L0X"));
    while(1);
  }
  // power 
  Serial.println(F("VL53L0X API Simple Ranging example\n\n")); 
}
Knowing  that modbus part of code not included.
void loop() {
  VL53L0X_RangingMeasurementData_t measure;
      Serial.print("Reading a measurement... ");
  lox.rangingTest(&measure, false); // pass in 'true' to get debug data printout!
  if (measure.RangeStatus != 4) {  // phase failures have incorrect data
    Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);
  } else {
    Serial.println(" out of range ");
  }
MBHoldingRegister[6] = measure.RangeMilliMeter;
      delay(1000);
}

注意:不包括代码的Modbus部分。 有人可以帮我解决问题吗?

0 个答案:

没有答案