LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
unsigned long time;
+unsigned long warmuptime = 60000; // 1 min.
int co2 = 0;
int temp = 0;
int lastppm = 0;
+void buzz(unsigned long pause, int count) {
+ for (int i = 0; i <= count; i++) {
+ digitalWrite(buzzer_pin, HIGH);
+ delay(pause);
+ digitalWrite(buzzer_pin, LOW);
+ if (i < count - 1) delay(pause);
+ }
+}
void setup()
{
mhz19.begin(rx_pin, tx_pin);
// LCD
- lcd.begin(16,2);
- lcd.setCursor(0,0);
+ lcd.begin(16, 2);
+ lcd.setCursor(0, 0);
lcd.print("Airing Butler");
- lcd.setCursor(0,1);
+ lcd.setCursor(0, 1);
lcd.print("says hello!");
- // LEDs + buzzer
+ // LEDs
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_red_pin, HIGH);
delay(500);
digitalWrite(led_red_pin, LOW);
- digitalWrite(buzzer_pin, HIGH);
- delay(200);
- digitalWrite(buzzer_pin, LOW);
+
+ // buzzer
+ pinMode(buzzer_pin, OUTPUT);
+ buzz(200, 1);
lcd.clear();
}
digitalWrite(led_green_pin, co2 < co2_warning_thr);
if (co2 >= 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);
+ buzz(100, 3);
}
if (co2 >= co2_warning_thr && lastppm < co2_warning_thr) {
- digitalWrite(buzzer_pin, HIGH);
- delay(500);
- digitalWrite(buzzer_pin, LOW);
+ buzz(500, 1);
}
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.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temp);
lcd.print(" C +/- ");