0 голосов

Здравствуйте! Проблема с датчиком CCS811. Около суток возвращал корректные значения, потом резко начал возвращать ошибку. Подключен совместно с DHT 11 к Arduino UNO. Пробовала подключать и по I2C, и по аналоговым. Результат один и тот же. Меняла библиотеку - тоже безрезультатно (сначала была adafruit, потом sparkfun).

#include <DHT.h>
#include <Wire.h>
#include <SparkFunCCS811.h>


#define DHTPIN 4 // номер пина, к которому подсоединен датчик
// Инициируем датчик
DHT dht(DHTPIN, DHT11);

//Анализатор воздуха CCS811
//#define CCS811_ADDR 0x5B //Default I2C Address
#define CCS811_ADDR 0x5A //Alternate I2C Address
// Инициируем датчик
CCS811 mySensor(CCS811_ADDR);


void setup() {                
  Serial.begin(9600);
  dht.begin();
  Wire.begin(); //Inialize I2C Hardware
  if (mySensor.begin() == false)
  {
    Serial.print("");
  }
  
}

void loop() {
  //получаем показания;
  getTemp();   
  getHumidity();
  if (mySensor.dataAvailable())
  {
    //If so, have the sensor read and calculate the results.
    //Get them later
    //mySensor.readAlgorithmResults();
    getCO();
  } else {
    Serial.print("c00 o00");
    Serial.println();
  }
  
  delay (1000);
}

int getHumidity(){
  //Считываем влажность
  int h = dht.readHumidity();  
  // Проверка удачно прошло ли считывание.
  if (isnan(h)) {
   Serial.print("h00 ");
   return 0;
  }
  Serial.print("h");
  Serial.print(h);
  Serial.print(" ");
  return h;
}

int getTemp(){
 // Считываем температуру
  int t = dht.readTemperature();
  // Проверка удачно прошло ли считывание.
  if (isnan(t)) {
   Serial.println("t00 ");
   return 0;
  } 
  Serial.print("t");
  Serial.print(t);
  Serial.print(" ");
  return t;
}

void getCO(){
  //Check to see if data is ready with .dataAvailable()
  //if (mySensor.dataAvailable())
  //{
    //If so, have the sensor read and calculate the results.
    //Get them later
    mySensor.readAlgorithmResults();
    Serial.print("c");
    //Returns calculated CO2 reading
    Serial.print(mySensor.getCO2());
    Serial.print(" ");
    Serial.print("o");
    //Returns calculated TVOC reading
    Serial.print(mySensor.getTVOC());
    Serial.println();
}

(5 баллов) 1 1 3

2 Ответы

+1 голос
 
Лучший ответ
Очевидно, что датчик поломался.
(2.7 тыс. баллов) 10 29 55
выбран
0 голосов
В описании пишут что этому датчику нужно 30 минут прогрева!
(593 баллов) 4 8 19
Да, он уже две недели так "прогревается".
Абсолютная такая же проблема, брал в амперке, получилось решить вопрос?
Да, датчик действительно оказался неисправен
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.

    За этот месяц ещё никого.

    ...