TFmini(Micro LiDAR Module) library tested on mbedos5.x
Dependents: 2018NHK_gakugaku_robo 2018NHK_gaku_ver2 2019NHK_A_sensor
TFmini.cpp
- Committer:
- UCHITAKE
- Date:
- 2018-08-29
- Revision:
- 5:eeb0e5bdd8b9
- Parent:
- 4:7622beb45675
- Child:
- 7:81f9d1372c45
File content as of revision 5:eeb0e5bdd8b9:
#include "TFmini.h" TFmini::TFmini(PinName serialTX, PinName serialRX) : RawSerial(serialTX, serialRX, TF_DEFAULT_BAUD) { attach(callback(this, &TFmini::receiveByte)); thread.start(callback(this, &TFmini::assembleLoop)); } void TFmini::receiveByte() { buf.push_back(getc()); } void TFmini::assemble() { uint16_t checksum = 0x0000; for(int i = 0; i < TF_SERIAL_BUFFER_SIZE - 1; i++) { checksum+= buf[i]; } uint8_t checksum_L = (checksum) & 0x00ff; if(checksum_L == buf[8]) { distance = ((buf[3]<<8)|buf[2]); if(distance > 1200) distance = 1200; strength = ((buf[5]<<8)|buf[4]); } } void TFmini::assembleLoop() { while(true) { if(buf.size() > TF_SERIAL_BUFFER_SIZE) { if(buf[0] == TF_HEADER_FIRST_BYTE && buf[1] == TF_HEADER_SECOND_BYTE) { assemble(); buf.erase(buf.begin(), buf.begin() + (TF_SERIAL_BUFFER_SIZE - 1)); } else { buf.erase(buf.begin()); } } } } int TFmini::getDistance() { return distance; } int TFmini::getStrength() { return strength; } int TFmini::getSize() { return buf.size(); }