Нужен код для датчика MH-Z19B

Maks_Side

✩✩✩✩✩✩✩
8 Дек 2019
2
0
Нужен код для проекта
Суть:
Получение данных ррm с датчика Co2 MH-z17B и вывод значения через RGB светодиод (красный жёлтый зелёный)

Arduino nano ATmega 328P
 

reachim

✩✩✩✩✩✩✩
3 Фев 2020
3
0
Хорватия
Вот вам ссылка на проект: https://www.2150692.ru/faq/87-co2-mhz19-arduino ,
где вы найдете все подробности работы датчика.
А вот переработанный код под ваши требования (RGB):

#include <SPI.h>
#define pwmPin 2
#define LedPin 13

/* Контроль СО2: минимум, в норме, превышает
данные выводы подключаются к RGB светодиоду, через токоограничивающие резисторы
в зависимости от того какие цвета требуется задействовать*/
#define LedPin_min 3 // желтый
#define LedPin_norm 4 // зеленый
#define LedPin_max 5 // красный

int16_t prevVal = LOW, times = 0;
int32_t th, tl, h, l, ppm;

// Контроль СО2: минимум, в норме, превышает. Здесь требуется задать значения контролируемых параметров
int32_t ppm_max, ppm_min, ppm_norm;

void setup() {
Serial.begin(9600);
pinMode(pwmPin, INPUT);
pinMode(LedPin, OUTPUT);
pinMode(LedPin_min, OUTPUT);
pinMode(LedPin_norm, OUTPUT);
pinMode(LedPin_max, OUTPUT);
}
void loop() {
uint32_t tt = millis();
int32_t myVal = digitalRead(pwmPin); //чтение PWM от CO2
if (myVal == HIGH) {
digitalWrite(LedPin, HIGH);
if (myVal != prevVal) {
h = tt;
tl = h - l;
prevVal = myVal;
}
}
else {
digitalWrite(LedPin, LOW);
if (myVal != prevVal) {
l = tt;
th = l - h;
prevVal = myVal;
ppm = 5000 * (th - 2) / (th + tl - 4);
if(ppm < ppm_min) digitalWrite(LedPin_min, HIGH);
if(ppm > ppm_min && ppm < ppm_max) digitalWrite(LedPin_norm, HIGH);
if(ppm >= ppm_max) digitalWrite(LedPin_max, HIGH);
Serial.println("PPM = " + String(ppm));
}
}
}

Удачи!