Troyka-барометр не работает в сети I2C

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем ne4iter, 14 май 2018.

  1. ne4iter

    ne4iter Нуб

    Доброго дня! Собрал метеостанцию на Troyka-барометре, DHT-22 и LCD 2004 I2C. Барометр работает по примеру с сайта. При добавлении в схему работает до отключения питания и перестает показывать данные. Скетч_сканер I2C видит на шине оба устройства под своими адресами (барометр и LCD):

    I2C Scanner
    Scanning...
    I2C device found at address 0x27 !
    I2C device found at address 0x5C !
    done

    Код ниже, подскажите в чем причина?
    // библиотека для работы I²C
    #include <Wire.h> // библиотека для работы с модулями IMU
    #include <LiquidCrystal_I2C.h> // библиотека дисплея
    #include <TroykaIMU.h> // библиотека барометра
    #include <DHT.h> // библиотека DHT22
    Barometer barometer(BARO_ADDRESS_V1); // создаём объект для работы с барометром
    LiquidCrystal_I2C lcd(0x27, 20, 4);
    #define DHTPIN 2 // пин DHT22
    #define DHTTYPE DHT22 // DHT 22 (AM2302)
    DHT dht(DHTPIN, DHTTYPE); // Initialize DHT sensor for normal 16mhz Arduino
    int chk;
    float hum; //переменная влажности
    float temp; //переменная температуры в С
    float far; //переменная температуры в F
    void setup()
    {
    Serial.begin(9600);
    lcd.init();
    lcd.backlight();
    lcd.clear(); // очистить дисплей// открываем последовательный порт
    lcd.setCursor(0, 0);
    lcd.print("Climat Monitor v.1.0");
    lcd.setCursor(5, 1);
    lcd.print("KIPiA 2018");
    lcd.setCursor(1, 3);
    lcd.print("SAYANSKIY BROILER");
    delay(5000); // на 5 секунд
    lcd.clear();
    dht.begin();
    }

    void loop()
    {
    delay(2000);
    float pressure = barometer.readPressureMillibars(); // переменная абс.давления
    float pressure2 = barometer.readPressureMillimetersHg(); // переменная давления в мм.рт.ст.
    float pressure3 = barometer.readPressurePascals(); // переменная давления в Па
    float altitude = barometer.pressureToAltitudeMeters(pressure);// переменная высоты над уровнем моря
    float temperature = barometer.readTemperatureC();// переменая температуры окружающей среды
    hum = dht.readHumidity(); // значение влажности
    temp = dht.readTemperature(); // температура в С
    far = dht.readTemperature(true); // температура в F
    // Вывод данных в Serial порт
    Serial.print("p: ");
    Serial.print(pressure);
    Serial.print(" mbar \t");
    Serial.print("p: ");
    Serial.print(pressure2);
    Serial.print(" mmHg \t");
    Serial.print("p: ");
    Serial.print(pressure3);
    Serial.print(" Pa \t");
    Serial.print("h: ");
    Serial.print(altitude);
    Serial.print(" m \t");
    Serial.print("t: ");
    Serial.print(temperature);
    Serial.println(" C");
    Serial.print("Humidity: ");
    Serial.print(hum);
    Serial.print(" %, Temp: ");
    Serial.print(temp);
    Serial.println(" Celsius");
    Serial.print(far);
    Serial.println(" Far");
    lcd.setCursor(0,0);
    lcd.print("Tmp:");
    lcd.print(temp);
    lcd.print((char)223);
    lcd.print("C");
    lcd.print(" ");
    lcd.setCursor(12,0);
    lcd.print(far);
    lcd.print((char)223);
    lcd.print("F");
    lcd.setCursor(0,1);
    lcd.print("Hum:");
    lcd.print(hum);
    lcd.print(" %");
    lcd.setCursor(12,1);
    lcd.print(altitude);
    lcd.print(" m");
    lcd.setCursor(0,2);
    lcd.print("Bar:");
    lcd.print(pressure2);
    lcd.print(" mmHg");
    lcd.setCursor(0,3);
    lcd.print(pressure3);
    lcd.print(" Pa");
    lcd.setCursor(12,3);
    lcd.print(temperature);
    lcd.print((char)223);
    lcd.print("C");
    delay(2000);
    }