Tarea
- Duración:
- 30
- Agrupamiento:
- 1
Se trata de cambiar el color del led RGB (pines digitales 6, 9 y 10) en función de la temperatura del sensor LM35. Si la temperatura está por debajo de 0 ºC se encenderá en color azul intenso. Si la temperatura está entre 0ºC y 20ºC tendrá tonalidades verdes (nada de verde en 0ºC y muy verde en 20ºC). Si la temperatura está entre 20ºC y 40ºC tendrá tonalidades rojas (nada de rojo en 20ºC y muy rojo en 40ºC). Si la temperatura supera los 40ºC se encenderá con color rojo intenso.
Objetivos:
- Repaso de inclusión y uso librerías.
- Repaso de lecturas analógicas.
- Repaso de condicionales.
- Repaso de funciones.
- Repaso de salidas analógicas (PWM).
Código:
#include "ABlocks_LiquidCrystal_I2C.h" //llama a la librería LiquidCrystal_I2C
float temperatura;
LiquidCrystal_I2C lcd_1(0x27, 16, 2); //configura una pantalla LCD llamada lcd_1 indicando su tamaño 16x2
void setup()
{
lcd_1.begin();//inicializa la pantalla
lcd_1.noCursor();//quita la visualización del cursor
lcd_1.backlight();//ilumina el fondo de pantalla
pintaPantalla();
}
void loop()
{
int valorlm35 = analogRead(A2);
float milivoltios = (valorlm35 / 1023.0) * 5 * 1000;
temperatura = milivoltios / 10;
pintaPantalla();
if (temperatura < 0) {
color (0, 0, 255);
}
else if (temperatura >= 0 && temperatura < 20) {
color (0, map (temperatura, 0, 20, 0, 255) , 0);
}
else if (temperatura >= 20 && temperatura < 40) {
color (map (temperatura, 20, 40, 0, 255), 0, 0);
}
else {
color (255, 0, 0);
}
delay (1000);
}
void pintaPantalla () {
lcd_1.clear();
lcd_1.setCursor(0, 0);//pone el cursor en columna o y fila 0 (arriba a la izquierda)
lcd_1.print("Temp.C:");//escribe texto en pantalla
lcd_1.setCursor(7, 0);
lcd_1.print(temperatura);//escribe en pantalla la variable temperatura
}
void color (int rojo, int verde, int azul) {
int pinRojo = 6;
int pinVerde = 9;
int pinAzul = 10;
analogWrite (pinRojo, rojo);
analogWrite (pinVerde, verde);
analogWrite (pinAzul, azul);
}