#include <Wire.h>
#include <LiquidCrystal.h>
#include <DFRobot_ENS160.h>

// Definições para o display LCD
const int rs = 25;
const int en = 26;
const int d4 = 27;
const int d5 = 14;
const int d6 = 12;
const int d7 = 13;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

// Inicialização do sensor DFRobot_ENS160
DFRobot_ENS160_I2C ENS160(&Wire, 0x53);  // Defina o endereço correto do sensor

void setup() {
  Wire.begin();  // Inicialização da comunicação I2C
  lcd.begin(16, 2);  // Inicialização do LCD com 16 colunas e 2 linhas
  Serial.begin(115200);

  while (NO_ERR != ENS160.begin()) {
    Serial.println("Falha na comunicação com o sensor. Verifique a conexão.");
    delay(3000);

    lcd.setCursor(0, 0);
    lcd.println("Falha de Conexao");
    lcd.setCursor(0, 1);
    lcd.println("   Com Sensor");
  }
}

void loop() {
  lcd.clear();

  uint8_t Status = ENS160.getENS160Status();
  uint8_t AQI = ENS160.getAQI();
  uint16_t TVOC = ENS160.getTVOC();
  uint16_t ECO2 = ENS160.getECO2();

  lcd.setCursor(0, 0);
  lcd.print("Status: ");
  lcd.print(Status);

  lcd.setCursor(0, 1);
  lcd.print("AQI: ");
  lcd.print(AQI);

  delay(1000);
}