【发布时间】:2021-09-05 05:14:23
【问题描述】:
我需要使用 Arduino Nano 从 I2C 中的激光雷达读取距离数据。目前,这是我编写的代码。
unsigned int readDistance()
{
unsigned int dist = 0 ; // LiDAR actually measured distance value. static so we can return previous dist
// step 1: instruct sensor to read echoes
Wire.beginTransmission(0x10) ; // transmit to device 0x10
Wire.write(2) ; // sets distance data address (addr)
Wire.write(3) ; // sets distance data address (addr)
Wire.endTransmission() ; // stop transmitting
// step 2: wait for readings to happen
delay(100) ; // datasheet suggests at least 100ms
// step 3: request reading from sensor
Wire.requestFrom(0x10, 2) ; // request 2 bytes (DIST_L, DIST_H) from slave device #0x10
dist = Wire.read() ; dist += Wire.read() << 8; // calculate distance value, bit shift high distance
return dist ; // return updated dist
}
但我感觉我从错误的数据地址请求',因为我没有得到我期望的结果(即变化的距离数据)。此外,我使用了一个 I2C 扫描仪,它 100% 确认激光雷达位于(默认地址)0x10。
(TF02 Pro)数据表:https://www.unmannedtechshop.co.uk/wp-content/uploads/2020/01/TF02-Pro-Product-Manual-Alpha.pdf
问题:我是从正确的数据地址读取数据 任何帮助将不胜感激。
【问题讨论】:
-
使用 I2CScanner 草图
-
@Juraj 这有什么帮助(没有恶意)?我知道设备的地址,我正在尝试读取给定的一系列字节,但我正在询问如何去做。 &我已经用它来确认我正在尝试从正确的设备读取数据
标签: c++ arduino lidar arduino-nano