const int co2_warning_thr = 1000;
const int co2_alarm_thr = 1500;
+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;
+unsigned long lastwarntime = 0;
int co2 = 0;
int temp = 0;
int lastppm = 0;
Serial.print(",");
Serial.println(temp);
+ // LEDs
digitalWrite(led_red_pin, co2 >= co2_alarm_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) {
- buzz(100, 3);
+ // LCD
+ if (time < warmuptime && (co2 == -1 || co2 == 410)) {
+ lcd.begin(16, 2);
+ lcd.setCursor(0, 0);
+ lcd.print("Airing Butler");
+ lcd.setCursor(0, 1);
+ lcd.print("is warming up...");
+ } else {
+ lcd.begin(16 ,2);
+ lcd.setCursor(0, 0);
+ lcd.print("CO2: ");
+ lcd.print(co2);
+ lcd.print(" ppm ");
+ lcd.setCursor(0, 1);
+ lcd.print("Temp: ");
+ lcd.print(temp);
+ lcd.print(" C +/- ");
}
- if (co2 >= co2_warning_thr && lastppm < co2_warning_thr) {
+ // buzzer
+ if (co2 >= co2_alarm_thr && lastppm < co2_alarm_thr && time - lastwarntime > cooldowntime) {
+ buzz(100, 3);
+ lastwarntime = time;
+ }
+ if (co2 >= co2_warning_thr && lastppm < co2_warning_thr && time - lastwarntime > cooldowntime) {
buzz(500, 1);
+ lastwarntime = time;
}
- lcd.setCursor(0, 0);
- lcd.print("CO2: ");
- lcd.print(co2);
- lcd.print(" ppm ");
- lcd.setCursor(0, 1);
- lcd.print("Temp: ");
- lcd.print(temp);
- lcd.print(" C +/- ");
-
lastppm = co2;
delay(5000);
}