From f477d5838b364728234e10a5e94f6ea460d9c029 Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Sun, 26 Dec 2021 19:07:01 +0100 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B4=D0=B0=D1=82=D1=87=D0=B8=D0=BA=20co2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/YourSensor.h | 14 +++++++++----- src/YourSensor.cpp | 25 +++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/include/YourSensor.h b/include/YourSensor.h index 9c3b72c8..fdef14b9 100644 --- a/include/YourSensor.h +++ b/include/YourSensor.h @@ -1,9 +1,13 @@ #pragma once #include -float yourSensorReading(String type, String addr); +extern float yourSensorReading(String type, String addr); -void HDC1080_init(String addr); -void AHTX0_init(); -void LCD_init(); -void BH1750_init(); +extern void HDC1080_init(String addr); +extern void AHTX0_init(); +extern void LCD_init(); +extern void BH1750_init(); + +//extern SoftwareSerial K_30_Serial; +extern unsigned long getValue(byte packet[]); +extern void sendRequest(byte packet[]); \ No newline at end of file diff --git a/src/YourSensor.cpp b/src/YourSensor.cpp index 04b3cca1..3e6e9ff5 100644 --- a/src/YourSensor.cpp +++ b/src/YourSensor.cpp @@ -28,6 +28,23 @@ BH1750 lightMeter; //создаем объект ADS1015 // Adafruit_ADS1015 ads; +// co2 sensor +SoftwareSerial K_30_Serial(13, 15); //Программный порт +byte readCO2[] = {0xFE, 0X44, 0X00, 0X08, 0X02, 0X9F, 0X25}; //Команды для запроса показаний с датчика +byte response[] = {0, 0, 0, 0, 0, 0, 0}; //массив для ответа от датчика +unsigned long getValue(byte packet[]) { + int high = packet[3]; //верхний байт показания СО2 + int low = packet[4]; //нижний байт показания СО2 + unsigned long val_1 = high * 256 + low; //соединяем байты + return val_1; +} +void sendRequest(byte packet[]) { + while (!K_30_Serial.available()) { + K_30_Serial.write(readCO2, 7); + delay(50); + } +} + float yourSensorReading(String type, String paramsAny) { float value; //========================================================HDC1080================================================================ @@ -62,6 +79,14 @@ float yourSensorReading(String type, String paramsAny) { BH1750_init(); value = lightMeter.readLightLevel(); } + //==========================================================BH1750================================================================= + if (type == "valCO2") { + K_30_Serial.begin(9600); + sendRequest(readCO2); + int valCO2 = getValue(response); + value = valCO2; + // Serial.println(valCO2); + } return value; }