#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
OneWire ourWire(2); //Se establece el pin 2 como bus OneWire
DallasTemperature sensors(&ourWire); //Se declara una variable u objeto para nuestro sensor
void spinner() {
static int8_t counter = 0;
const char* glyphs = "\xa1\xa5\xdb";
LCD.setCursor(15, 1);
LCD.print(glyphs[counter++]);
if (counter == strlen(glyphs)) {
counter = 0;
}
}
byte grado[8] = {
B01110,
B10001,
B10001,
B01110,
B00000,
B00000,
B00000,
B00000
};
byte cuerpo[8] = {
B00000,
B10001,
B00000,
B00000,
B10001,
B01110,
B00000,
};
const int LED = 11;
void setup() {
LCD.createChar (0, grado);
LCD.createChar (1, cuerpo);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(4, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
Serial.begin(9600);
sensors.begin(); //Se inicia el sensor
LCD.init();
LCD.backlight();
LCD.setCursor(0, 0);
LCD.print("Electro: ");
LCD.setCursor(0, 1);
LCD.print("Temp: ");
LCD.setCursor(11, 1);
LCD.write (byte (0));
for( int l=9; l<12; l++) {
digitalWrite(l, HIGH);
digitalWrite(l-1, LOW);
delay (500);
}
for( int l=9; l<12; l++) {
digitalWrite(l, LOW);
}
spinner();
}
void loop() {
sensors.requestTemperatures(); //Se envía el comando para leer la temperatura
float temp= sensors.getTempCByIndex(0); //Se obtiene la temperatura en ºC
if (temp > 80) {
digitalWrite(4, HIGH);
alerta(LED);
LCD.setCursor(9, 0);
LCD.print("ENCEND.");
}
else { digitalWrite(4, LOW);
LCD.setCursor(9, 0);
LCD.print("APAGADO");
}
digitalWrite(LED_BUILTIN, HIGH);
Serial.print(" Temperatura: ");
Serial.print(temp, 1);
Serial.println(" ºC");
LCD.setCursor(6, 1);
LCD.print(temp, 1);
LCD.setCursor(11, 1);
LCD.write (byte (0));
LCD.print("C");
delay(3000);
digitalWrite(LED_BUILTIN, LOW);
}
// hace parpadear un led 3 veces
void alerta(int led){
digitalWrite(led, HIGH);
delay(200);
digitalWrite(led, LOW);
delay(200);
digitalWrite(led, HIGH);
delay(200);
digitalWrite(led, LOW);
delay(200);
digitalWrite(led, HIGH);
delay(200);
digitalWrite(led, LOW);
delay(200);
}