tfmini-lidar

cesars/tfmini-lidar/tfmini-lidar

Connect to PIN (8, 7); // RX, TX (SoftSerial)
tfmini-lidar
@/tfmini-lidar
Connect to PIN (8, 7); // RX, TX (SoftSerial)
Delaynumber
Reading interval
Serial_OUTboolean
True = activated output values to serial monitor.
Getpulse
Get value
tfmini-lidar
Distance
Strength
Done
Delay
Serial_OUT
Get
Donepulse
Pulse done
Strengthnumber
Signal strength
Distancenumber
Output distance in mm
To use the node in your project you should have the cesars/tfmini-lidar library installed. Use the “File → Add Library” menu item in XOD IDE if you don’t have it yet. See Using libraries for more info.

C++ implementation

#pragma XOD require "https://github.com/Cesar-S/DFRobot_TFmini"


{{#global}}
#include <DFRobot_TFmini.h>
{{/global}}

struct State {
    uint8_t mem[sizeof(DFRobot_TFmini)];
};

using Type = DFRobot_TFmini*;

SoftwareSerial mySerial(8, 7); // RX, TX
uint16_t distance,strength;

{{ GENERATED_CODE }}

void evaluate(Context ctx) {

    if (isSettingUp()){
    auto state = getState(ctx);
    Type TFmini = new (state->mem) DFRobot_TFmini();
    }

    if (!isInputDirty<input_Get>(ctx))
        return;

    auto state = getState(ctx);
    auto TFmini = reinterpret_cast<DFRobot_TFmini*>(state->mem);
    TFmini->begin(mySerial);

    int _delay = getValue<input_Delay>(ctx);
    int _serout = getValue<input_Serial_OUT>(ctx);

    if(!TFmini->measure() & _serout){
        Serial.print("Sensor not detected...");
        Serial.println("...no read value");
    }

    if(TFmini->measure()){
        if( _serout == true){//Measure Distance and get signal strength
            distance = TFmini->getDistance();       //Get distance data
            strength = TFmini->getStrength();       //Get signal strength data
            Serial.print("Distance = ");
            Serial.print(distance);
            Serial.println("mm");
            Serial.print("Strength = ");
            Serial.println(strength);
        }
        emitValue<output_Distance>(ctx, distance);
        emitValue<output_Strength>(ctx, strength);
        delay(500);
    }
    delay(_delay);
    emitValue<output_Done>(ctx, 1);
}