X-Git-Url: https://git.toastfreeware.priv.at/toast/airingbutler.git/blobdiff_plain/ee2821ca637d9d5a79a37249275f54cf5b567d53..f0647e8832273802c122d2484528a70bf3414090:/airingbutler.ino?ds=sidebyside diff --git a/airingbutler.ino b/airingbutler.ino index 075db34..a330864 100644 --- a/airingbutler.ino +++ b/airingbutler.ino @@ -14,10 +14,14 @@ const int buzzer_pin = 13; 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; @@ -81,27 +85,40 @@ void loop() 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); }