]> ToastFreeware Gitweb - toast/airingbutler.git/blobdiff - airingbutler.ino
move LCD output before buzzer
[toast/airingbutler.git] / airingbutler.ino
index 075db34f29970b1bca75080305623b21f4dd0c32..ebdc5ee67a80f95141a766b2e346cef797b1e4d6 100644 (file)
@@ -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,34 @@ 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);
-       }
-
-       if (co2 >= co2_warning_thr && lastppm < co2_warning_thr) {
-               buzz(500, 1);
-       }
-
+       // LCD
        lcd.setCursor(0, 0);
        lcd.print("CO2: ");
        lcd.print(co2);
+       if (time < warmuptime && (co2 == -1 || co2 == 410)) {
+               lcd.print (" (W)");
+       }
        lcd.print(" ppm    ");
        lcd.setCursor(0, 1);
        lcd.print("Temp: ");
        lcd.print(temp);
        lcd.print(" C +/-  ");
 
+       // 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;
+       }
+
        lastppm = co2;
        delay(5000);
 }