我有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部分。 有人可以帮我解决问题吗?