Arduino en español
Circuitos con Arduino - Juan Antonio Villalpando
-- Tutorial de iniciación a Arduino --
Volver al índice del tutorial
____________________________
49BC.- Teclado 4x4, bus I2C. Pantalla LCD. Sensor de humedad y temperatura.
- En una pantalla LCD visualizamos la Humedad y Temperatura con el sensor DHT11. Mediante el teclado podemos observar la Humedad o la Temperatura.
- Cuando la temperatura alcanza un valor máximo establecido se enciende el LED13, si la temperatura es menor el LED13 permanece apagado.
- Este tutorial es una amplicación del anterior: 49BB.- Teclado táctil, I2C. LCD.
Otros t utoriales relacionados:
- En el tutorial: 31.- Pantalla LCD. Bus I2C, vimos cómo utilizar una pantalla LCD con módulo I2C.
- En el tutorial: 49.- Teclado táctil matrix 4x4, vimos cómo utilizar un teclado 4x4.-
-
En el tutorial: 49B.- Teclado táctil adaptado a I2C. Adaptador de 8 conexiones a Bus I2C con PCF8574, vimos cómo utilizar un teclado 4x4 con módulo I2C.
- En el tutorial: 44.- Sensor de humedad y temperatura DHT 11.
_______________________
- Teclado y LED.
'A' |
Modifica la temperatura máxima para encender el LED13 |
LED13 |
'B' |
Visualiza la Humedad. |
LED13 |
'C' |
Visualiza la Temperatura. |
LED13 |
'#' |
Fin de entrada de datos para la opción 'A' |
|
______________________________________________________
- Conexionado.
- Sería conveniente poner una resistencia limitadora de unos 220 ohmios, en serie con el LED, pero en estos tutoriales voy a alimentar a los LEDs directamente sin esa resistencia. En todos los montajes que he realizado los LEDs y el Arduino han funcionado perfectamente sin esa resistencia limitadora.
______________________________________________________
- Código para el Arduino.
- Fíjate que he puesto la dirección I2C de mi módulo para la pantalla LCD: 0x27
- Fíjate que he puesto la dirección I2C de mi tarjeta para el teclado: 0x38
- El código utiliza dos librerías de teclado la Keypad_I2C y la Keypad
- Las dos las puedes bajar de este enlace: Keypad-KeypadI2C.zip
- Además también están las librerías Wire y LiquidCrystal que puedes encontrar en el tutorial de 31.- Pantalla LCD.
- Esas librerías las debes copiar en la carpetar libraries de donde tengas instalado el IDE del Arduino.
- Una vez que cargues el código en el Arduino, abre el Serial Monitor y pulsa teclas.
jTeclado_LCD_humedad.ino |
// Juan A. Villalpando.
// Abril 2018. KIO4.COM
#include <Wire.h>
#include <Keypad_I2C.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define LED13 13
// Temperatura-humedad
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
const byte ROWS = 4;
const byte COLS = 4;
String maximo = "40";
char key = ' ';
float humedad = 0.0;
float temperatura = 0.0;
float temperatura_old = 0.1;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {0,1,2,3};
byte colPins[COLS] = {4,5,6,7};
int i2caddress = 0x38; // Direccion I2C teclado.
Keypad_I2C kpd = Keypad_I2C( makeKeymap(keys), rowPins, colPins, ROWS, COLS, i2caddress );
void setup(){
Serial.begin(9600);
kpd.begin();
lcd.begin(16,2);// Columnas y filas de LCD
pinMode(LED13, OUTPUT);
dht.begin();
}
void loop(){
temperatura = dht.readTemperature();
if (temperatura != temperatura_old) { // Disminuir parpadeo.
temperatura_old = temperatura;
ver_temperatura();
}
key = kpd.getKey();
if (key){
if (key == 'A'){ // Cambiar maximo.
introduce_maximo();
}
if (key == 'B'){ // Ver humedad.
ver_humedad();
}
if (key == 'C'){ // Ver temperatura.
ver_temperatura();
}
}
if (String(temperatura) >= maximo) {
digitalWrite(LED13, HIGH);
} else {
digitalWrite(LED13, LOW);
}
}
////////////////////////////////////////
// Introduccion de datos de maximo.
void introduce_maximo() {
lcd.clear(); // Borra pantalla
lcd.setCursor(0,0); // Inicio del cursor
lcd.print("Valor maximo");
lcd.setCursor(0,1); // Siguiente renglón.
lcd.print(maximo);
maximo = "";
while (key != '#' )
{
key = kpd.getKey();
if (key){
maximo = maximo + key;
lcd.clear(); // Borra pantalla
lcd.setCursor(0,0); // Inicio del cursor
lcd.print("Valor maximo");
lcd.setCursor(0,1); // Siguiente renglón.
lcd.print(maximo);
delay(100);
}
}
}
////////////////////////////////////////////////////
// Ver informacion.
void ver_humedad() {
humedad = dht.readHumidity();
lcd.clear(); // Borra pantalla
lcd.setCursor(0,0); // Inicio del cursor
lcd.print("Humedad");
lcd.setCursor(0,1); // Siguiente renglón.
lcd.print(humedad);
delay(50);
}
void ver_temperatura() {
temperatura = dht.readTemperature();
lcd.clear(); // Borra pantalla
lcd.setCursor(0,0); // Inicio del cursor
lcd.print("Temperatura");
lcd.setCursor(0,1); // Siguiente renglón.
lcd.print(temperatura);
delay(50);
}
|
______________________________________________________
- Comentarios.
- Al pulsar la tecla "B" visualizamos la humedad.
- Al pulsar la tecla "C" visualizamos la temperatura.
- Al pulsar la tecla "A" podemos establecer una temperatura máxima, para ello escribimos dos números y luego pulsamos "#" para salir,
ejemplo: 24#
- Es importante recordar que para salir de la opción "A", debemos pulsar: "#"
- Cuando la temperatura alcance ese valor, se encenderá el LED13.
______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
________________________________
|