#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
LiquidCrystal lcd(12,11,10,9,8,7);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float tempC = 0;
char grados=223;
float set_temp=18 ;
byte Alien[] = {
B11111,
B10101,
B11111,
B11111,
B01110,
B01010,
B11011,
B00000
};
byte Blanco[] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000
};
byte Alien2[] = {
B11111,
B10101,
B11111,
B11111,
B01110,
B01011,
B11000,
B00000
};
void setup()
{
pinMode(13, INPUT);
pinMode(3, OUTPUT);
sensors.begin(); //Inicializa los sensores
lcd.begin(20, 4); //Inicializa la librería
lcd.clear();
lcd.setCursor(1,0); //Columna=1,Fila=0
lcd.print("ACTUAL T:");
lcd.setCursor(16,0);
lcd.print(grados);
lcd.print("C");
lcd.setCursor(1,1);
lcd.print("AJUSTE T:");
lcd.setCursor(16,1);
lcd.print(grados);
lcd.print("C");
Serial.begin (9600);
lcd.createChar(0, Alien);
lcd.createChar(2, Alien2);
lcd.createChar(1,Blanco);
}
void loop()
{
int value=analogRead(A0);
set_temp=map(value,0,1023,15,26); //Ajuste entre 15 y 26 grados
sensors.requestTemperatures(); // Mide la temperatura
tempC = sensors.getTempCByIndex(0);
Serial.println(tempC);
Serial.println(set_temp);
lcd.setCursor(11,0);
lcd.print(tempC,1); //Imprime el valor leido, 1 decimal
lcd.setCursor(11,1);
lcd.print(set_temp,1);
for(int i = 0; i< 20; i++)
{
lcd.setCursor(i,4);
lcd.write(byte(0));
delay(300);
lcd.setCursor(i,4);
lcd.write(byte(2));
delay(300);
lcd.setCursor(i,4);
lcd.write(byte(1));
}
if(set_temp>tempC)
{
digitalWrite(3, HIGH); //Si la T.ajustada es mayor conectar rele
}
else
{
digitalWrite(3,LOW);
}
}