float BETA = 3950; //Iniciamos la variable BETA con el valor del termistor para que luego la equación funcione correctamente
int Led_Verde = 10; //Establecemos el PIN 10 de la placa al led verde
int Led_Rojo = 11; //Establecemos el PIN 11 de la placa al led rojo
int Led_Transparente = 12; //Establecemos el PIN 12 de la placa al led transparente
int Buzzer = 13; //Establecemos el PIN 13 de la placa al buzzer
int FrecuenciaBuzzer = 750; // Frecuencia del buzzer (Hz)
void setup()
{
Serial.begin(9600); //Establecemos la comunicación serie para poder sacar mensajes por la consola
pinMode (Led_Verde, OUTPUT); //Establecemos el led en modo de salida (Output)
pinMode (Led_Rojo, OUTPUT); //Establecemos el led en modo de salida (Output)
pinMode (Led_Transparente, OUTPUT); //Establecemos el led en modo de salida (Output)
pinMode (Buzzer, OUTPUT);//Establecemos el buzzer en modo de salida (Output)
}
void loop()
{
int sensorDeTemperatura = analogRead(A0); //Establecemos el PIN A0 de la placa al sensor de temperatura NTC
float temperaturaEnCelsius = 1 / (log(1 / (1023. / sensorDeTemperatura - 1))/BETA + 1.0/298.15) - 273.15; //Pasamos el valor decimal del sensor NTC a grados Celsius
float temperaturaRedondeada = round(temperaturaEnCelsius * 10) / 10.0; //Redondeamos la temperatura en Celsius a un único decimal
if(sensorDeTemperatura > -25) //Si el sensor de temperatura está funcionando, enciende el led transparente
{
digitalWrite(Led_Transparente, HIGH); //Led transparente encendido
}
if(temperaturaRedondeada <= 30) //Si la temperatura es inferior o igual a 30, enciende el led verde
{
Serial.print("Temperatura: ✅ -> "); //Mensaje por consola de temperatura correcta
Serial.print(temperaturaRedondeada, 1); //Mensaje por consola con el valor de la temperatura
Serial.println(" °C"); //Mensaje por consola del símbolo de Celsius
noTone(Buzzer); //Buzzer silenciado
digitalWrite(Led_Verde, HIGH); //Led verde encendido
digitalWrite(Led_Rojo, LOW); //Led rojo apagado
}
if(temperaturaRedondeada > 30) //Si la temperatura es superior a 30, enciende el led rojo
{
Serial.print("Temperatura: ⚠️ -> "); //Mensaje por consola de temperatura sobrecalentada
Serial.print(temperaturaRedondeada, 1); //Mensaje por consola con el valor de la temperatura
Serial.println(" °C"); //Mensaje por consola del símbolo de Celsius
tone(Buzzer, FrecuenciaBuzzer); //Emite sonido del buzzer
delay(1000); //1 segundo de espera
noTone(Buzzer); //Buzzer silenciado
digitalWrite(Led_Verde, LOW); //Led verde apagado
digitalWrite(Led_Rojo, HIGH); //Led rojo encendido
}
delay(1000); //1 segundo de espera
}