don't warn more often than once per time period (currently one minute),
to avoid constant beeping when the co₂ value flaps around the threshold.
const int co2_warning_thr = 1000;
const int co2_alarm_thr = 1500;
const int co2_warning_thr = 1000;
const int co2_alarm_thr = 1500;
-const unsigned long warmuptime = 60000; // 1 min.
+const unsigned long warmuptime = 60000; // 1 min.
+const unsigned long cooldowntime = 60000; // 1 min.
MHZ19 mhz19 = MHZ19(rx_pin,tx_pin);
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
unsigned long time;
MHZ19 mhz19 = MHZ19(rx_pin,tx_pin);
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
unsigned long time;
+unsigned long lastwarntime = 0;
int co2 = 0;
int temp = 0;
int lastppm = 0;
int co2 = 0;
int temp = 0;
int lastppm = 0;
digitalWrite(led_yellow_pin, co2 >= co2_warning_thr && co2 < co2_alarm_thr);
digitalWrite(led_green_pin, co2 < co2_warning_thr);
digitalWrite(led_yellow_pin, co2 >= co2_warning_thr && co2 < co2_alarm_thr);
digitalWrite(led_green_pin, co2 < co2_warning_thr);
- if (co2 >= co2_alarm_thr && lastppm < co2_alarm_thr) {
+ if (co2 >= co2_alarm_thr && lastppm < co2_alarm_thr && time - lastwarntime > cooldowntime) {
- if (co2 >= co2_warning_thr && lastppm < co2_warning_thr) {
+ if (co2 >= co2_warning_thr && lastppm < co2_warning_thr && time - lastwarntime > cooldowntime) {