#include /*Kijelző könyvtár*/ int ThermistorPin = 0; /*Termisztor feszültésgosztott analog bemenete A0*/ int Potipin = 1; /*A kivánt hőmérséklet potijának bemenete A1*/ int pinOut = 7; /*Relay kimenete a kazán felé*/ int Vo; int Temp; /*Temp*/ float R1 = 10000; /*A feszültség osztó ismert ellenállása*/ float logR2, R2, T, Tc, Po, Poti; float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07; LiquidCrystal lcd(12, 11, 5, 4, 3, 2); /*LCD kimenete 4 bit*/ byte ebetu[8] = { /*É betű megszerkesztése (nem tartalmazza a natív betűkészlet)*/ B00010, B00100, B01110, B10001, B11111, B10000, B01110, B00000, }; void setup() { Serial.begin(9600); pinMode(pinOut, OUTPUT); /*Relay kimenet kimenetre állítása*/ lcd.createChar(0, ebetu); /*é betű legenerálása*/ } void loop() { Vo = analogRead(ThermistorPin); /*Termisztor feszültség kiolvasása*/ Poti = analogRead(Potipin); /*Potival beállított érték kiolvasása*/ R2 = R1 * (1023.0 / (float)Vo - 1.0); logR2 = log(R2); T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2)); Tc = T - 273.15; /*Kelvinbő celziusz átalakítás (gondolom)*/ Tc = Tc * 10; /*Csak tizedes számjegyek legyenek*/ Temp = Tc; Tc = Temp; Tc = Tc / 10; Tc = Tc *10; /*5 tizedre kerekítés*/ Temp = Tc; Temp = Temp / 5; Temp = Temp * 5; Tc = Temp; Tc = Tc / 10; Po = (Poti / 70) + 15; /*Poti celziusszá alakítása*/ Po = Po * 10; /*Csak tizedes számjegyek legyenek*/ Temp = Po; Po = Temp; Po = Po / 10; Po = Po *10; /*5 tizedesre kerekítés*/ Temp = Po; Temp = Temp /5; Temp = Temp *5; Po = Temp; Po = Po /10; lcd.begin(16, 2); /*Kijelző konfig*/ lcd.setCursor(0,0); /*Kezdő pozició megadás, bal felső sarok*/ lcd.print("H"); /*Kjelzőn megjelnő infó kiírása*/ lcd.print((char)239); /*ő betű kiírása*/ lcd.print("m.="); lcd.print(Tc,1); lcd.print(" C"); lcd.print((char)223); /*fok kiírása*/ lcd.setCursor(0,1); /*Második sor megadása*/ lcd.print("C"); lcd.write(byte(0)); /*é betű kirajzolása*/ lcd.print("l ="); lcd.print(Po,1); lcd.print(" C"); lcd.print((char)223); /*fok kiírása*/ if (Tc >= Po){ /*Beállított érték és a mért érték összehasonlítása*/ digitalWrite(pinOut, LOW); /*Ha nagyobb nincs bekapcsolva a relay*/ } else { digitalWrite(pinOut, HIGH); /*Egyébként meg be van kapcsolva*/ } delay(500); /*1mp időköz*/ /* lcd.clear(); /*kijelző törlése*/ }