Проект сборки нам необходимо:
- Arduino 1.8.2
- Библиотека Adafruit_CCS811.h
- Библиотека TM1637.h
Код: Выделить всё
#include "Adafruit_CCS811.h"
#include "TM1637.h"
#define CLK 16 // A2 Arduino Pro Mini
#define DIO 17 // A3 Arduino Pro Mini
//#define ledPin 9 // 9 Arduino Pro Mini
//#define CLK 13 // D7 ESP8266
//#define DIO 12 // D6 ESP8266
//#define ledPin 16 // D0 ESP8266
TM1637 disp(CLK, DIO); //
Adafruit_CCS811 ccs;
bool alarm = true;
void setup() {
//pinMode(LED_BUILTIN, OUTPUT); // выход под LED
//pinMode(ledPin, OUTPUT); // выход под LED
disp.init(); // инициализация
disp.set(0); // яркость, 0 - 7 (минимум - максимум)
// если датчик не исправен выводим "----"
if(!ccs.begin()){
disp.clearDisplay(); // очистка дисплея
disp.displayByte(_dash, _dash, _dash, _dash);
delay(500);
while(1);
}
//calibrate temperature sensor
while(!ccs.available());
float temp = ccs.calculateTemperature();
ccs.setTempOffset(temp - 25.0);
}
void loop() {
if(ccs.available()){
float temp = ccs.calculateTemperature();
if(!ccs.readData()){
disp.clearDisplay(); // очистка дисплея
disp.displayInt(ccs.geteCO2()); // выводим
delay(2000);
disp.clearDisplay();
disp.displayInt(ccs.getTVOC());
delay(1000);
}
// управление LED
if(ccs.geteCO2() >= 1200 || ccs.getTVOC() >= 220) { // если порог превышен
digitalWrite(LED_BUILTIN, HIGH);
//digitalWrite(ledPin, HIGH);
}
else if(ccs.geteCO2() <= 500 || ccs.getTVOC() <= 11) { // если показания в норме
digitalWrite(LED_BUILTIN, LOW);
//digitalWrite(ledPin, LOW);
}
}
else{
disp.clearDisplay(); // очистка дисплея
disp.displayByte(_E, _r, _r, _empty);
while(1);
}
delay(500);
}