Arduino Code

#include <SPI.h>
#include <Wire.h>
#include <LIDARLite.h>
#include <SparkFunAutoDriver.h>
#include <SparkFundSPINConstants.h>

// Set up board
AutoDriver boardA(10, 6);
bool dir = FWD;

// Initialize angles
double Angle1;
double Angle2;
double dAngle;
double Angle = 0.0;

// Create a new LIDARLite instance
LIDARLite myLidarLite;

void setup() {
  Serial.begin(9600);
  boardA.configSyncPin(BUSY_PIN, 0);// BUSY pin low during operations;
                                    //  second paramter ignored.
  boardA.configStepMode(STEP_FS);   // 128 microsteps per step
  boardA.setMaxSpeed(10000);        // 10000 steps/s max
  boardA.setFullSpeed(10000);       // microstep below 10000 steps/s
  boardA.setAcc(10000);             // accelerate at 10000 steps/s/s
  boardA.setDec(10000);
  boardA.setSlewRate(SR_180V_us);   // Upping the edge speed increases torque.
  boardA.setOCThreshold(OC_750mA);  // OC threshold 750mA
  boardA.setPWMFreq(PWM_DIV_2, PWM_MUL_2); // 31.25kHz PWM freq
  boardA.setOCShutdown(OC_SD_DISABLE); // don't shutdown on OC
  boardA.setVoltageComp(VS_COMP_DISABLE); // don't compensate for motor V
  boardA.setSwitchMode(SW_USER);    // Switch is not hard stop
  boardA.setOscMode(INT_16MHZ_OSCOUT_16MHZ); // for boardA, we want 16MHz
                                    //  internal osc, 16MHz out.
  boardA.setAccKVAL(25);           // We'll tinker with these later, if needed.
  boardA.setDecKVAL(25);
  boardA.setRunKVAL(25);
  boardA.setHoldKVAL(32);           // This controls the holding current; keep it low.
  boardA.setLoSpdOpt(1);
  myLidarLite.begin(1,true);

  // Read first angle
  Angle1 = analogRead(0);
}

void loop() {

  // Spin motor
  boardA.run(dir,100);

  // Get the change in angle
  Angle2 = analogRead(0);
  dAngle = Angle2-Angle1;
  if (dAngle<-20.0)
    dAngle = dAngle + 1024.0;

  if (dAngle>20.0)
    dAngle = 6.0;
	
  //  Modify the change in angle for the gear ratio between lidar and potentiometer
  Angle = Angle + dAngle*1.447*6.28318530718/1024.0;

  //  Next we need to take 1 reading with preamp stabilization and reference pulse (these default to true)
  //  Print to serial with a space seperation and newline at end
  Serial.print(myLidarLite.distance()/100.0);
  Serial.print(' ');
  Serial.println(Angle);
  
  Angle1 = Angle2;
  
  // Next lets take 99 reading without preamp stabilization and reference pulse (these read about 0.5-0.75ms faster than with)
  for(int i = 1; i < 99; i++){
    boardA.run(dir,100);
    Angle2 = analogRead(0);
    dAngle = Angle2-Angle1;
    if (dAngle<-20.0)
      dAngle = dAngle + 1024.0;
  
    if (dAngle>20.0)
      dAngle = 6.0;

    Angle = Angle + dAngle*1.447*6.28318530718/1024.0;
      
    Angle1 = Angle2;

    Serial.print(myLidarLite.distance(false,false)/100.0);
    Serial.print(' ');
    Serial.println(Angle);
  }
}