Mät avstånd med VL53L0X

VL53L0X är en sensor som mäter avstånd med hjälp av osynlig infraröd laser. Den kan mäta avstånd på upp till 2 meter med en nogrannhet på 1 mm. Det finns flera kodbibliotek för Arduino tillgängliga som gör det mycket enkelt att använda sensorn. Den enda riktiga nackdelen med sensorn är att den har en enda fast i2c-address så det går bara att ha en sensor på samma i2c-bus. Så vill man använda flera med samma kontroller behöver man använda mjukvarudefinierad i2c för alla utom en av sensorerna, eller en i2c-multiplexer-modul. I det här projektet använder vi en VL53L0X-sensor-modul tillsammans med ett Arduino-kort.

Kodbiblioteket

Det finns som sagt redan färdiga kodbibliotek tillgänliga som gör att vi inte behöver lära oss exakt vilka kommandon som ska skrivas till sensorn och hur datan ska läsas ut och tolkas. Biblioteket kan göra allt det åt oss. I det här exemplet använder vi oss av ett bibliotek skapat av AdaFruit som heter ”Adafruit_VL53L0X” vilket går att installera med ett par klick. Starta Arduino-programmet, gå till menyn Skiss > Inkludera bibioktek > Hantera bibliotek… Detta öppnar upp bibliotekshanteraren och här kan du söka efter biblioteket ”Adafruit_VL53L0X”. När du hittat det klickar du på det och väljer installera. När biblioteket laddats ner och installeras kan du stänga bibliotekshanteraren. Detta behöver du bara göra en gång på datorn, därefter finns det tillgängligt.

Kopplingen

Så här kopplar du in en VL53L0X-modul till ett Arduino Uno-kort.

Koden

// Hämta kodbiblioteket för sensorn
#include "Adafruit_VL53L0X.h"

// Skapa ett sensor-objekt
Adafruit_VL53L0X lox = Adafruit_VL53L0X();

void setup() {
  // Starta serie-kommunikationen till datorn (via USB)
  Serial.begin(9600);
  Serial.println("Startar sensor");
  // Starta sensorn och kontrollera att det lyckades
  if (!lox.begin()) {
    Serial.println("Kunde inte starta sensorn"));
    // Stoppa programmet
    while(1);
  }
  // Säg till sensorn att vi vill mäta kontinuerligt
  lox.startRangeContinuous();
}

void loop() {
  // Kolla om det finns ett nytt mätvärde tillgängligt
  if (lox.isRangeComplete()) {
    // Läs in avståndet från sensorn. Värdet är i mm.
    int range = lox.readRange();
    // Skicka tillbaka avståndet till datorn via USB-kontakten
    Serial.print("Avstånd: ");
    Serial.print(range);
    Serial.println(" mm");
  }
}

Lämna ett svar

Din e-postadress kommer inte publiceras.