Вот вам ссылка на проект: 
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));
      }
   }
}
Удачи!