//monitoreo con pantalla LCD 16x2 I2C
//Se convierte valor del sensor a grados Celcius
//Cuando es mayor o igual a 30º envia alerta
//José Cruz Abril
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <math.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int sensorPin = A0;
const int ledPin = 8;
const int buzzerPin = 9;
const float BETA = 3950; // parámetro del NTC
void setup() {
lcd.init();
lcd.backlight();
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
lcd.setCursor(0, 0);
lcd.print("Iniciando...");
delay(2000);
lcd.clear();
}
void loop() {
int valor = analogRead(sensorPin);
//se convierte valor a grados Celcius
float temperatura = 1 / (log(1 / (1023.0 / valor - 1)) / BETA + 1.0 / 298.15) - 273.15;
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperatura);
lcd.print((char)223);
lcd.print("C ");
if (temperatura >= 30) {
digitalWrite(ledPin, HIGH);
digitalWrite(buzzerPin, HIGH);
lcd.setCursor(0, 1);
lcd.print("ALERTA TEMP ALTA");
} else {
digitalWrite(ledPin, LOW);
digitalWrite(buzzerPin, LOW);
lcd.setCursor(0, 1);
lcd.print("Temp normal ");
}
delay(1000);
}