/* Измеритель уровня углекислого газа СО2 (C)2020 ООО "ЛИК", http://lic.com.ua */ #include "MHZ19.h" //https://github.com/strange-v/MHZ19 #include #include #include "Adafruit_LEDBackpack.h" #include "Adafruit_GFX.h" #define ledPin1 13 //светодиод на плате контроллера #define DEBUG #define DISPLAY_ADDRESS 0x70 SoftwareSerial mySerial(10, 11); //Объявляем программный порт на выводах 10(RX), 11(TX) MHZ19 mhz(&mySerial); //Объявляем датчик CO2 MHZ-19B Adafruit_7segment clockDisplay = Adafruit_7segment(); //Объявляем 7-сегметный дисплей HT16K33 uint32_t timer_co2 = 0; int MHZ_CO2 = 0; int MHZ_T = 0; boolean switchDisplay = false; void setup(){ //Инициализируем 7-сегментный дисплей clockDisplay.begin(DISPLAY_ADDRESS); clockDisplay.clear(); clockDisplay.setBrightness(1); //Инициализируем программный и аппаратный порты mySerial.begin(9600); Serial.begin(9600); while (!Serial) { } Serial.println("Start programm!"); //Устанавливаем диапазон <2000ppm для датчика СО2 mhz.setRange(MHZ19_RANGE_2000); } void loop() { if ((millis()-timer_co2) > 5000) { MHZ19_RESULT response = mhz.retrieveData(); if (response == MHZ19_RESULT_OK) { MHZ_CO2 = mhz.getCO2(); //Получаем уровень углекислого газа в воздухе, CO2 MHZ_T = mhz.getTemperature(); //Получаем температуру воздуха, CO2 if (switchDisplay) clockDisplay.print(MHZ_CO2, DEC); else clockDisplay.print(MHZ_T, DEC); clockDisplay.writeDisplay(); Serial.println("CO2="+String(MHZ_CO2)+"ppm, T="+String(MHZ_T)+"°C"); digitalWrite(ledPin1,(not digitalRead(ledPin1))); switchDisplay = not switchDisplay; } else { Serial.println("MHZ19 EROOR = "+String(response)); } timer_co2 = millis(); } }