En el proyecto NorbaSky debemos trabajar con diferentes tipos de sensores, con los cuales mediremos temperatura, humedad, movimiento, luz… Para aprender a utilizar este tipo de sensores hace un tiempo empezamos a trabajar con la placa programable Arduino.
Algunos de los alumnos ya conocían Arduino y habían hecho alguna práctica en cursos pasados pero otros no habían oído hablar de ella. Por esta razón, empezamos programando un simple led parpadeando, así conseguimos que algunos refrescasen la memoria y otros se iniciasen en la programación de esta conocida placa.
Debido a la rápida curva de aprendizaje que tiene Arduino, muy pronto todos estábamos listos para programar algo más complejo que un simple led parpadeante.
Primer programa: Led parpadeante |
Botón que enciende y apaga un led |
Diferentes leds encendiéndose y apagándose |
El sensor DHT11 es simple de programar, pues solo tiene 3 salidas (una a tierra (GND), otra a 5 V y otra a un pin digital de la placa Arduino).
Su circuito es el siguiente:
Circuito con sensor DHT11 |
#include <DHT.h>
int SENSOR = 2;
float temp,humedad;
DHT dht (SENSOR, DHT11);
void setup(){
Serial.begin(9600);
dht.begin();
}
void loop(){
humedad = dht.readHumidity();
temp = dht.readTemperature();
Serial.println("Temperatura ");
Serial.println(temp);
Serial.println("C");
Serial.println("Humedad: ");
Serial.println(humedad);
Serial.println("%");
delay(15000);
}
int SENSOR = 2;
float temp,humedad;
DHT dht (SENSOR, DHT11);
void setup(){
Serial.begin(9600);
dht.begin();
}
void loop(){
humedad = dht.readHumidity();
temp = dht.readTemperature();
Serial.println("Temperatura ");
Serial.println(temp);
Serial.println("C");
Serial.println("Humedad: ");
Serial.println(humedad);
Serial.println("%");
delay(15000);
}
Código de gestión del sensor de temperatura
Alumnos trabajando en el circuito |
Después conectamos un potenciómetro de 10K que permite el ajuste del contraste. Los extremos del potenciómetro van al positivo y negativo de la alimentación, mientras que el pin central va al pin VO del módulo LCD.
Lo siguiente fue conectar los pines de datos D4, D5, D6, D7. Utilizaremos solamente estos 4 pines.
Finalmente hicimos la conexión de los pines de control RS y E, que irán conectados a otros 2 pintes digitales de Arduino.
Circuito:
Esquema del circuito de control del LCD 16x2 con Arduino |
/* Usamos la librería LiquidCrystal.h, para el manejo de las pantallas
* LCD. El circuito tiene los siguientes pines: * RS ->pin 12
* Enable (E) --> pin 11
* D4 ->pin 5
* D5 ->pin 4
* D6 -> pin 3
* D7 -> pin 2
* R/W-> GND
* Resistencia10K
* Corriente: +5V y GND
* VO a un pin PWM (pin 3)
*/
// incluimos la librería
#include <LiquidCrystal.h>
// asociamos los pines de la pantalla LCD con el número
// del pin arduino al que está conectado
int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
//configurar el número de columnas y filas de la pantalla LCD
lcd.begin(16, 2);
// Imprimir un mensaje en la pantalla
lcd.print("¡Hola, Norba!");
delay(1000);
}
void loop() {
// desplazarse 13 posiciones (longitud de la cadena)
// hacia la izquierda para “meter el texto” hacia
// la izquierda y que desaparezca
for (int i = 0; i < 13; i++) {
// desplaza 1 posicion hacia la izquierda
lcd.scrollDisplayLeft();
delay(150);
}
}
* Enable (E) --> pin 11
* D4 ->pin 5
* D5 ->pin 4
* D6 -> pin 3
* D7 -> pin 2
* R/W-> GND
* Resistencia10K
* Corriente: +5V y GND
* VO a un pin PWM (pin 3)
*/
// incluimos la librería
#include <LiquidCrystal.h>
// asociamos los pines de la pantalla LCD con el número
// del pin arduino al que está conectado
int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
//configurar el número de columnas y filas de la pantalla LCD
lcd.begin(16, 2);
// Imprimir un mensaje en la pantalla
lcd.print("¡Hola, Norba!");
delay(1000);
}
void loop() {
// desplazarse 13 posiciones (longitud de la cadena)
// hacia la izquierda para “meter el texto” hacia
// la izquierda y que desaparezca
for (int i = 0; i < 13; i++) {
// desplaza 1 posicion hacia la izquierda
lcd.scrollDisplayLeft();
delay(150);
}
}
Código de gestión del display LCD
Finalmente, conseguimos nuestro objetivo, y pudimos ver en la pantalla la medición hecha por el sensor DHT11
Circuito de mide temperatura y humerad con sensor DTH11 y muestra resultados a través del LCD 16x2 |
No hay comentarios:
Publicar un comentario