MatrixMiniR4 1.1.4
Matrix Mini R4 Arduino Library API Documentation
Loading...
Searching...
No Matches
MiniR4LaserSensorExt.cpp
Go to the documentation of this file.
1
8
10{
11 _pWire->begin();
12 i2cMUXSelect();
13 delay(50);
14 if (i2cReadData(Device_ID) == 0x47) {
15 i2cWriteData(Device_CONFIG, 0x04); // reset
16 delay(500);
17 i2cWriteData(Device_CONFIG, 0x02); // enable
18 return true;
19 } else {
20 return false;
21 }
22}
23
25{
26 i2cMUXSelect();
27 if (((i2cReadData(Device_CONFIG) & 0x01) == 0)) {
28 uint16_t data = (uint16_t)(i2cReadData(Distance_H) << 8 | i2cReadData(Distance_L));
29 return data;
30 } else {
31 return 8191;
32 }
33}
34
35uint8_t MatrixLaser::i2cReadData(LaserRegType reg)
36{
37
38 _pWire->beginTransmission(MatrixLaser_ADDR);
39 _pWire->write(reg);
40 _pWire->endTransmission(1);
41
42 delay(1);
43
44 _pWire->requestFrom(MatrixLaser_ADDR, 1);
45
46 delay(1);
47
48 return _pWire->read();
49}
50
51void MatrixLaser::i2cMUXSelect()
52{
53 if (_ch < 0) return; // no MUX
54 _pWire->beginTransmission(ADDR_PCA954X);
55 _pWire->write((1 << _ch));
56 _pWire->endTransmission(1);
57 delayMicroseconds(300);
58}
59
60void MatrixLaser::i2cWriteData(LaserRegType reg, uint8_t data)
61{
62
63 _pWire->beginTransmission(MatrixLaser_ADDR);
64
65 _pWire->write(reg);
66 _pWire->write(data);
67
68 _pWire->endTransmission(1);
69}
Handling MiniR4.I2Cn Matrix Laser Sensor functions.
#define ADDR_PCA954X
#define MatrixLaser_ADDR
bool begin()
Initializes the laser sensor.
uint16_t getDistance()
Gets the distance measured by the laser sensor.