#include #include "DFRobot_SHT20.h" #include #include DFRobot_SHT20 sht20; LiquidCrystal lcd(10, 8, 2, 3, 4, 5); byte tempchar1[8] = {B00000, B00001, B00010, B00100, B00100, B00100, B00100, B00111}; byte tempchar2[8] = {B00111, B00111, B00111, B01111, B11111, B11111, B01111, B00011}; byte tempchar3[8] = {B00000, B10000, B01011, B00100, B00111, B00100, B00111, B11100}; byte tempchar4[8] = {B11111, B11100, B11100, B11110, B11111, B11111, B11110, B11000}; byte humchar5[8] = {B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; byte humchar6[8] = {B11111, B11111, B11111, B01111, B00011, B00000, B00000, B00000}; byte humchar7[8] = {B00000, B10000, B11000, B11000, B11100, B11110, B11110, B11111}; byte humchar8[8] = {B11111, B11111, B11111, B11110, B11100, B00000, B00000, B00000}; const int RELAY_PIN_1 = 14; const int RELAY_PIN_2 = 15; const int buzzer = 16; volatile int ASAGI = 12; void kesme (void) { cli(); PCICR = 0; PCMSK0 = 0; PCICR |= (1 << PCIE0); PCMSK0 |= (1 << PCINT4); sei(); } ISR(PCINT0_vect) { delay(50); if (!digitalRead(ASAGI) == 1) { delay(25); while (!digitalRead(ASAGI) == 1); PORTB ^= (1 << 5); } } void setup() { kesme(); sht20.initSHT20(); lcd.begin(16, 2); pinMode(RELAY_PIN_1, OUTPUT); pinMode(RELAY_PIN_2, OUTPUT); pinMode(buzzer, OUTPUT); pinMode(13, OUTPUT); pinMode(ASAGI, INPUT); wdt_enable(WDTO_4S); } void loop() { float humd = sht20.readHumidity(); float temp = sht20.readTemperature(); lcd.home(); lcd.createChar(1, tempchar1); lcd.createChar(2, tempchar2); lcd.createChar(3, tempchar3); lcd.createChar(4, tempchar4); lcd.setCursor(0, 0); lcd.write(1); lcd.setCursor(0, 1); lcd.write(2); lcd.setCursor(1, 0); lcd.write(3); lcd.setCursor(1, 1); lcd.write(4); lcd.setCursor(3, 0); lcd.print("SIC"); lcd.setCursor(3, 1); lcd.print(temp, 1); lcd.print((char) 223); lcd.createChar(5, humchar5); lcd.createChar(6, humchar6); lcd.createChar(7, humchar7); lcd.createChar(8, humchar8); lcd.setCursor(9, 0); lcd.write(5); lcd.setCursor(9, 1); lcd.write(6); lcd.setCursor(10, 0); lcd.write(7); lcd.setCursor(10, 1); lcd.write(8); lcd.setCursor(12, 0); lcd.print("NEM"); lcd.setCursor(12, 1); lcd.print(humd, 0); lcd.print("%"); if (temp < 37.7) { digitalWrite(RELAY_PIN_1, HIGH); } else { digitalWrite(RELAY_PIN_1, LOW); } if (humd < 55.0) { digitalWrite(RELAY_PIN_2, HIGH); } else { digitalWrite(RELAY_PIN_2, LOW); } if (humd > 80) { digitalWrite(buzzer, HIGH); } else { digitalWrite(buzzer, LOW); } delay(250); wdt_reset(); }