#include <EEPROM.
h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
#define ThermistorPin A0 // for Arduino microcontroller
#define bt_set A3
#define bt_up A4
#define bt_down A5
#define fan 9
#define buzzer 13
long ADC_Value;
float R1 = 10000; // value of R1 on board
float logR2, R2, T;
//steinhart-hart coeficients for thermistor
float c1 = 0.001129148, c2 = 0.000234125, c3 = 0.0000000876741;
float setL_temp = 30.5;
float setH_temp = 39.5;
float temp=0;
int duty_cycle;
int Set=0, flag=0, flash=0;
void setup() {// put your setup code here, to run once:
pinMode(ThermistorPin, INPUT);
pinMode(bt_set, INPUT_PULLUP);
pinMode(bt_up, INPUT_PULLUP);
pinMode(bt_down, INPUT_PULLUP);
pinMode(fan, OUTPUT);
pinMode(buzzer, OUTPUT);
[Link](16, 2); // Configura lcd numero columnas y filas
[Link]();
[Link] (0,0);
[Link](" Welcome To ");
[Link] (0,1);
[Link](" Temp Control ");
if([Link](0)==0){}
else{
[Link](10, setL_temp);
[Link](15, setH_temp);
[Link](0, 0);
}
[Link](10, setL_temp);
[Link](15, setH_temp);
delay(2000); //wait 1000 mS for next measure
[Link]();
}
void loop(){
ADC_Value=0;
for(int i=0; i<100; i++) {
ADC_Value = ADC_Value+analogRead(ThermistorPin);
delay(1);
}
ADC_Value=ADC_Value/100;
R2 = R1 * (1023.0 / (float)ADC_Value - 1.0); //calculate resistance on thermistor
logR2 = log(R2);
temp = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2)); // temperature in Kelvin
temp = temp - 273.15; //convert Kelvin to Celcius
int value1 = temp*10;
int value2 = setL_temp*10;
int value3 = setH_temp*10;
duty_cycle = map(value1, value2, value3, 0, 100);
if(duty_cycle>100)duty_cycle=100;
if(duty_cycle<0)duty_cycle=0;
if(temp<setL_temp){digitalWrite(fan, 0);}
else{analogWrite(fan, (duty_cycle*2)+55); }
if(temp>setH_temp){digitalWrite(buzzer, HIGH); delay(100);}
if(digitalRead(bt_set)==0){
digitalWrite(buzzer, HIGH);
if(flag==0){ flag=1;
Set=Set+1;
if(Set>2){Set=0; flash=0;}
delay(200);
}
}else{flag=0;}
if(digitalRead(bt_up)==0){
digitalWrite(buzzer, HIGH);
if(Set==1){setL_temp = setL_temp+.1;[Link](10, setL_temp);}
if(Set==2){setH_temp = setH_temp+.1;[Link](15, setH_temp);}
delay(10);
}
if(digitalRead(bt_down)==0){
digitalWrite(buzzer, HIGH);
if(Set==1){setL_temp = setL_temp-.1;[Link](10, setL_temp);}
if(Set==2){setH_temp = setH_temp-.1;[Link](15, setH_temp);}
delay(10);
}
if(Set==0){
[Link](0,0);
[Link](" Temp: ");
[Link](temp,1);
[Link](223);
[Link]("C ");
[Link](0,1);
[Link](" Fan Speed:");
if(duty_cycle<100)[Link](" ");
[Link](duty_cycle);
[Link]("% ");
}else{
[Link](0,0);
[Link](" Setting Mode ");
[Link](0,1);
[Link]("L:");
if(Set==1 && flash==1){[Link](" ");}
else{[Link](setL_temp,1);}
[Link]("C ");
[Link](9,1);
[Link]("H:");
if(Set==2 && flash==1){[Link](" ");}
else{[Link](setH_temp,1);}
[Link]("C ");
}
if(Set>0){flash=!flash;}
delay(1); //wait 1 mS for next measure
digitalWrite(buzzer, LOW);
}