Driver for the LIDARLite v2 and v3 on the Arduino, with many improvements over the base library (Robustness, asynchronous acquisition, higher acquisition frequency, state machine, maintained)
To avoid having to read blindly the data from the Controller (distance, statuses, signal_strenghs) we should add a configurable callback the user implements and give to the controller.
One callback for each laser : callback(self); and for the velocity : callback(self, dt);
Global callback when all lasers have a data : callback(... ?)
// READ Registers// Those are registers we only READ from
#defineSTATUS_REGISTER0x01
#defineSIGNAL_STRENGTH_REGISTER0x0e
#defineERROR_REGISTER0x40
#defineMEASURED_VALUE_REGISTER0x8f
#defineREAD_SERIAL_REGISTERS0x96// WRITE Registers// Those are register we only WRITE on
#defineCONTROL_REGISTER0x00
#defineSERIAL1_REGISTER0x18
#defineSERIAL2_REGISTER0x19
#defineADDRESS_REGISTER0x1a
#definePARTY_LINE_REGISTER0x1e
#defineCOMMAND_REGISTER0x40
#defineSCALE_VELOCITY_REGISTER0x45
#defineVELOCITY_MODE_REGISTER0x04
#defineOFFSET_REGISTER0x13// Values
#defineINITIATE_VALUE0x04
#definePARTY_LINE_ON0x00
#definePARTY_LINE_OFF0x08
#defineVELOCITY_MODE_DATA0xa0// Busyflag from STATUS_REGISTER
#defineBUSYFLAG_READY_VALUE0x00
Hi, I am looking through your cool project because the official lidar API have some problems when I use it.
In your OneLidar example,I have two questions:
1): It just define some pin for PWM method like Trigger pin and Mode pin, but when it receive distance data just use I2C method.
2): the LIDAR_TYPE not used for that example, I know it was declared as I2C_TYPE first, but not used in all the loop.
Maybe I misunderstanding something, please give me some suggestions. thanks for sharing your project again.