Предварительная калибровка vl6180x

Тема в разделе "Arduino & Shields", создана пользователем Sometria, 23 фев 2018.

  1. Sometria

    Sometria Нуб

    Товарисчи, никак не могу разобраться, как написать программку для калибровки после запуска.
    Вот набросал примерный код, но нет никакой реакции. Мб, что-то не так?
    Код (C++):
    // библиотека для работы I²C
    #include <Wire.h>
    // библиотеку для модуля VL6180X
    #include <SparkFun_VL6180X.h>
    // адрес датчика приближения по умолчанию
    #define VL6180X_ADDRESS 0x29
    // создаём объект для работы с модулем
    VL6180x sensor(VL6180X_ADDRESS);

    //const int sensorPin1 = A4; // вывод к которому подключен датчик
    //const int sensorPin2 = A5; // вывод к которому подключен датчик

    int Relay = 4;
    int sensorValue = 0; // значение датчика
    int sensorMin = 1023; // минимальное значение датчика
    int sensorMax = 0; // максимальное значение датчика
    void setup()
    {
      // открываем монитор Serial-порта
      Serial.begin(9600);
      // проверяем инициализацию модуля
      while (sensor.VL6180xInit()) {
        Serial.println("Failed to initalize");
        delay(1000);
      }
      // загружаем настройки модуля по умолочнию
      sensor.VL6180xDefautSettings();
      // ждём 1 секунду
      delay(1000);

                             // калибровка на протяжении 5 с //
    while (millis () < 5000) {
    sensorValue1 = analogRead (sensorPin1);
    sensorValue2 = analogRead (sensorPin2);
    }
    // установим максимальное значение
    if (sensorValue1 && sensorValue2 > sensorMax) {
    sensorMax = sensorValue1;
    sensorMax = sensorValue2;
    }

    // установим минимальное значение
    if (sensorValue1 && sensorValue2 < sensorMin) {
    sensorMin = sensorValue1;
    sensorMin = sensorValue2;
    }
    }
                                       // Конец //
    void loop()
    {
      // получаем и выводим значения расстояния до объекта
      // и уровень внешнего освещения
      Serial.print("Light = ");
      Serial.print(sensor.getAmbientLight(GAIN_1));
      Serial.print(" Lx\t\t");
      Serial.print("Distance = ");
      Serial.print(sensor.getDistance() );
      Serial.println(" mm");
      delay(100);
     
                                       // Калибровка //
    // считываем информацию с датчика:
    sensorValue1 = analogRead (sensorPin1);
    sensorValue2 = analogRead (sensorPin2);
    // применяем калибровку
    sensorValue1 = map (sensorValue1, sensorMin, sensorMax, 0, 255);
    sensorValue2 = map (sensorValue2, sensorMin, sensorMax, 0, 255);
    // если значение сенсора вышло за пределы калибровки
    sensorValue1 = constrain (sensorValue1, 0, 255);
    sensorValue2 = constrain (sensorValue2, 0, 255);

    Serial.print("Start calibrate");
    Serial.println("Light = ");
    Serial.print("Light =  ");