#include <OneWire.h>
#include <DallasTemperature.h>
// Define el pin virtual del sensor DS18B20
#define ONE_WIRE_BUS 2
// Inicializa el sensor DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Define los pines virtuales de los LEDs
// Azul pin 3 , Verde pin 4 , rojo pin5
int ledB=3;
int ledG=4;
int ledR=5;
// Define una variable para almacenar el tiempo transcurrido
unsigned long previousMillis = 0;
// Define un intervalo en milisegundos para registrar la temperatura
const long interval = 1000; // Registra cada segundo
void setup() {
// Inicializa los 3 LEDs como salidas con la funcion pinMode();
pinMode(ledB, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledR, OUTPUT);
// Inicializa la comunicación con el sensor DS18B20
sensors.begin();
// Enciende el LED azul
digitalWrite(ledB, HIGH);
// Inicializa la comunicación serial a una velocidad específica
Serial.begin(9600);
}
void loop() {
// Obtiene el tiempo actual
unsigned long currentMillis = millis();
// Realiza una lectura de la temperatura
sensors.requestTemperatures();
float temperatureC = sensors.getTempCByIndex(0);
// Verifica si ha pasado el tiempo para registrar la temperatura
if (currentMillis - previousMillis >= interval) {
// Guarda el tiempo y la temperatura en el puerto serie
Serial.print(currentMillis);
Serial.print(",");
Serial.println(temperatureC);
// Actualiza el tiempo anterior para la siguiente lectura
previousMillis = currentMillis;
}
// Verifica si la temperatura " temperatureC "está en el rango deseado
if (temperatureC>=35.0 && temperatureC <=36.0) {
digitalWrite(ledG,HIGH);
digitalWrite(ledR, LOW);
// Temperatura dentro del rango entre 35-36: enciende el LED verde y apaga el LED rojo
} else if (temperatureC>36.0) {
// Temperatura superior a 36°C: enciende el LED rojo intermitentemente
digitalWrite(ledG, LOW);
// Alterna el estado del LED rojo cada segundo
digitalWrite(ledR, !digitalRead(ledR));
} else {
// Temperatura fuera del rango deseado: apaga el LED verde y el LED rojo
digitalWrite(ledG, LOW);
digitalWrite(ledR, LOW);
}
}
Loading
ds18b20
ds18b20