مشکل در اندازه گیری فاصله توسط ماژول VL6180x و برد آردوینو اونو

2 ماه قبل
35 بازدید

0

سلام ، من سعی کردم از ماژول VL6180X و یک برد اردوینو اونو برای اندازه گیری فاصله استفاده کنم از کد زیر برای راه انداز برد استفاده کردم.
پین SDA به A4 و پین SCL به A5 روی برد وصل کردم. اما مدار من حداقل کمتر از ۱۲۰ میلیمتر را نشان نمی دهد و حدود ۱۲۰ میلیمتر را صفر از آن به بعد شروع می کند به نشان دادن مقادیر ۱ میلیمتر  و ۲ و  ...
و همچنین همیشه مقدار Lux را صفر برمیگرداند.
چطور می توانم مشکلم را حل کنم؟

نمونه کد بر اساس  نمونه کد داخل آردوینو عبارت است از :

#include <Wire.h>
#include "Adafruit_VL6180X.h"

Adafruit_VL6180X vl = Adafruit_VL6180X();

void setup() {
  Serial.begin(115200);

  // wait for serial port to open on native usb devices
  while (!Serial) {
    delay(1);
  }
  
  Serial.println("Adafruit VL6180x test!");
  if (! vl.begin()) {
    Serial.println("Failed to find sensor");
    while (1);
  }
  Serial.println("Sensor found!");
}

void loop() {
  float lux = vl.readLux(VL6180X_ALS_GAIN_5);

  Serial.print("Lux: "); Serial.println(lux);
  
  uint8_t range = vl.readRange();
  uint8_t status = vl.readRangeStatus();

  if (status == VL6180X_ERROR_NONE) {
    Serial.print("Range: "); Serial.println(range);
  }

  // Some error occurred, print it out!
  
  if  ((status >= VL6180X_ERROR_SYSERR_1) && (status <= VL6180X_ERROR_SYSERR_5)) {
    Serial.println("System error");
  }
  else if (status == VL6180X_ERROR_ECEFAIL) {
    Serial.println("ECE failure");
  }
  else if (status == VL6180X_ERROR_NOCONVERGE) {
    Serial.println("No convergence");
  }
  else if (status == VL6180X_ERROR_RANGEIGNORE) {
    Serial.println("Ignoring range");
  }
  else if (status == VL6180X_ERROR_SNR) {
    Serial.println("Signal/Noise error");
  }
  else if (status == VL6180X_ERROR_RAWUFLOW) {
    Serial.println("Raw reading underflow");
  }
  else if (status == VL6180X_ERROR_RAWOFLOW) {
    Serial.println("Raw reading overflow");
  }
  else if (status == VL6180X_ERROR_RANGEUFLOW) {
    Serial.println("Range reading underflow");
  }
  else if (status == VL6180X_ERROR_RANGEOFLOW) {
    Serial.println("Range reading overflow");
  }
  delay(50);
}
05 آبان 03 در 06:43
داریوش عجمی
1

افزودن دیدگاه

1 پاسخ ثبت شده است
0

با سلام

در خصوص خطای 13 میلیمتری، در توضیحات محصول نیز ذکر شده است که چنین خطایی وجود دارد.

اما در خصوص سنجش نور محیط، با استفاده از کتابخانه هایی معتبر، جوابی برای آن نیافتیم.

باید کتابخانه مربوطه ویرایش شود تا این موضوع حل شود و نیاز به زمان دارد.

کتابخانه مناسب را از طریق لینک های زیر می توانید دانلود کنید.

لینک 1

لینک 2

لینک 3

لینک آموزش DFRobot (مربوط به کتابخانه لینک 3)

07 آبان 03 در 05:17
مجید مرآتی
609

افزودن دیدگاه


انجمن کافه‌ربات © 1400