Alertas con condiciones
Enciende un LED de alerta cuando la temperatura supera un umbral, usando if y else.
Qué vas a construir
El sensor de temperatura con un LED de alerta. Cuando la temperatura llega a 30 °C o más, el LED se enciende. Cuando baja, se apaga.
Lo que aprendes
- Cómo tomar decisiones con
ifyelse. - La diferencia entre
=(asignar) y==(comparar). - Qué es un umbral y por qué conviene definirlo como constante.
- Cómo organizar la lectura del sensor en una función.
Materiales en Tinkercad
- Arduino Uno R3
- Sensor TMP36, conectado como en Leer un sensor de temperatura
- LED y resistencia de 220 Ω
- Protoboard y cables
Paso 1: Conecta el LED de alerta
- Conecta el ánodo del LED al pin 8.
- Conecta el cátodo a la resistencia de 220 Ω y la resistencia a GND.
El sensor se queda igual que en Leer un sensor de temperatura.
Paso 2: Escribe el código
const int SENSOR = A0;
const int ALERTA = 8;
const float UMBRAL = 30.0; // grados Celsius
float leerCelsius() {
int lectura = analogRead(SENSOR);
float voltaje = lectura * 5.0 / 1024.0;
return (voltaje - 0.5) * 100.0;
}
void setup() {
pinMode(ALERTA, OUTPUT);
Serial.begin(9600);
}
void loop() {
float celsius = leerCelsius();
if (celsius >= UMBRAL) {
digitalWrite(ALERTA, HIGH); // alerta encendida
} else {
digitalWrite(ALERTA, LOW); // todo normal
}
Serial.println(celsius);
delay(500);
}
Fíjate en que UMBRAL está en un solo lugar. Si quieres cambiar el límite, modificas esa línea y no buscas en todo el código.
Paso 3: Prueba el umbral
Hay dos formas de probarlo:
- Con el sensor: si Tinkercad te permite cambiar la temperatura del TMP36, ponla por encima de 30 °C.
- Sin cambiar el sensor: baja temporalmente el valor de
UMBRALa 20 °C. Si la temperatura de la simulación supera ese valor, el LED se enciende.
Cuando termines la prueba, vuelve a poner 30 °C.
Cómo sabes que lo lograste
- El LED se apaga cuando la temperatura está por debajo del umbral.
- El LED se enciende cuando la temperatura supera el umbral.
- Puedes explicar la diferencia entre
=y==con un ejemplo.
Qué salió mal
El LED siempre está encendido. Probablemente escribiste if (celsius = UMBRAL) con un solo =. Eso asigna en vez de comparar. Debe ser >=.
El LED nunca se enciende. Revisa que el umbral sea un valor que la simulación pueda alcanzar. Si la temperatura está en 22 °C, un umbral de 30 °C nunca se activa.
Siguiente clase
En la siguiente clase vas a hacer que el sistema lea el sensor y responda a un botón al mismo tiempo, sin usar delay() para esperar.