]> ToastFreeware Gitweb - toast/airingbutler.git/blobdiff - airingbutler.ino
some cleanup (comments and whitespace)
[toast/airingbutler.git] / airingbutler.ino
index 8ea9d41099e7a2f1686a015c835fb75311aee62c..c93f4ba89dad7496c546c027c24957dd18119b7a 100644 (file)
 #include <SoftwareSerial.h>
 #include <SoftwareSerial.h>
+#include <LiquidCrystal.h>
 #include "MHZ19.h"
 
 const int rx_pin = 2; // connect to TX on MHZ19
 const int tx_pin = 3; // connect to RX on MHZ19
 
 #include "MHZ19.h"
 
 const int rx_pin = 2; // connect to TX on MHZ19
 const int tx_pin = 3; // connect to RX on MHZ19
 
+const int led_green_pin  = 4;
+const int led_yellow_pin = 5;
+const int led_red_pin    = 6;
+
+const int buzzer_pin = 13;
+
+const int co2_warning_thr = 1000;
+const int co2_alarm_thr   = 1500;
 
 MHZ19 mhz19 = MHZ19(rx_pin,tx_pin);
 
 MHZ19 mhz19 = MHZ19(rx_pin,tx_pin);
+LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
+
+unsigned long time;
+int lastppm = 0;
 
 
 void setup()
 {
 
 
 void setup()
 {
-    Serial.begin(115200);
-    Serial.println("CO2,temp");
-    mhz19.begin(rx_pin, tx_pin);
+       Serial.begin(115200);
+       Serial.println("Time,CO2,Temp");
+
+       // MH-Z19
+       mhz19.begin(rx_pin, tx_pin);
+
+       // LCD
+       lcd.begin(16,2);
+       lcd.setCursor(0,0);
+       lcd.print("Airing Butler");
+       lcd.setCursor(0,1);
+       lcd.print("says hello!");
+
+       // LEDs + buzzer
+       pinMode(led_green_pin, OUTPUT);
+       pinMode(led_yellow_pin, OUTPUT);
+       pinMode(led_red_pin, OUTPUT);
+       pinMode(buzzer_pin, OUTPUT);
+       digitalWrite(led_green_pin, HIGH);
+       delay(500);
+       digitalWrite(led_green_pin, LOW);
+       digitalWrite(led_yellow_pin, HIGH);
+       delay(500);
+       digitalWrite(led_yellow_pin, LOW);
+       digitalWrite(led_red_pin, HIGH);
+       delay(500);
+       digitalWrite(led_red_pin, LOW);
+       digitalWrite(buzzer_pin, HIGH);
+       delay(200);
+       digitalWrite(buzzer_pin, LOW);
+
+       lcd.clear();
 }
 
 
 void loop()
 {
 }
 
 
 void loop()
 {
-    measurement_t m = mhz19.getMeasurement();
+       time = millis();
+       measurement_t m = mhz19.getMeasurement();
 
 
-    Serial.print(m.co2_ppm);
-    Serial.print(",");
-    Serial.println(m.temperature);
-    
-    delay(500);
-}
+       Serial.print(time);
+       Serial.print(",");
+       Serial.print(m.co2_ppm);
+       Serial.print(",");
+       Serial.println(m.temperature);
+
+       digitalWrite(led_red_pin, m.co2_ppm >= co2_alarm_thr);
+       digitalWrite(led_yellow_pin, m.co2_ppm >= co2_warning_thr && m.co2_ppm < co2_alarm_thr);
+       digitalWrite(led_green_pin, m.co2_ppm < co2_warning_thr);
+
+       if (m.co2_ppm >= co2_alarm_thr && lastppm < co2_alarm_thr) {
+               digitalWrite(buzzer_pin, HIGH);
+               delay(100);
+               digitalWrite(buzzer_pin, LOW);
+               delay(100);
+               digitalWrite(buzzer_pin, HIGH);
+               delay(100);
+               digitalWrite(buzzer_pin, LOW);
+               delay(100);
+               digitalWrite(buzzer_pin, HIGH);
+               delay(100);
+               digitalWrite(buzzer_pin, LOW);
+       }
 
 
+       if (m.co2_ppm >= co2_warning_thr && lastppm < co2_warning_thr) {
+               digitalWrite(buzzer_pin, HIGH);
+               delay(500);
+               digitalWrite(buzzer_pin, LOW);
+       }
+
+       lcd.setCursor(0, 0);
+       lcd.print("CO2: ");
+       lcd.print(m.co2_ppm);
+       lcd.print(" ppm         ");
+
+       lastppm = m.co2_ppm;
+       delay(5000);
+}