La pantalla LCD de 16×2 permite conectar la pantalla al arduino usando solamente dos lineas digitales a través del bus I2C. Te explico como utilizar una pantalla LCD 16×2por I2C con Arduino .
Para usar el LCD 16×2 por I2C con Arduino es necesario también agregar una librería a nuestro IDE, de forma que este sepa como comunicarse con el chip PCF8574. Para conocer como cargar una librería y comenzar a utilizarla, te recomiendo revisar el tutorial. Cabe aclarar que esta librería, así como el adaptador I2C deben funcionar de forma correcta con las pantallas de 20×4.
La librería LiquidCrystal_I2C dispone de métodos similares (algunos idénticos) a los de la librería oficial.
- LiquidCrystal_I2C() – Constructor de la clase, configura el hardware.
- init() – Prepara el LCD para su uso.
- clear() – Borra todos los caracteres de la pantalla LCD.
- setCursor(col, row) – Permite mover el cursor a la posición indicada en sus parámetros.
- print() – Imprime una variable o literal en la pantalla
- scrollDisplayLeft() y scrollDisplayRight() – Recorre el contenido de la pantalla a la izquierda o a la derecha
- backlight() y noBacklight() – Métodos para encender / apagar la iluminación de fondo
- createChar(num, data) – Crear un carácter definido por el usuario en la memoria del controlador de pantalla
Recomendamos revisar el siguiente enlace para conocer todos los métodos de los que dispone la librería oficial LiquidCrystal:
Ahora que hemos repasado la librería veamos algunos ejemplos:
Código para escanear la dirección de la pantalla.
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknown error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000); // wait 5 seconds for next scan
}
Ej 1. Un Hola mundo con Arduino y LCD
Mostraremos texto y un valor numérico en el LCD, para esto cargamos el siguiente sketch:
#include <Wire.h> #include <LiquidCrystal_I2C.h> //Crear el objeto lcd dirección 0x27 y 16 columnas x 2 filas LiquidCrystal_I2C lcd(0x27,16,2); // void setup() { // Inicializar el LCD lcd.init(); //Encender la luz de fondo. lcd.backlight(); // Escribimos el Mensaje en el LCD. lcd.print("Hola Mundo"); } void loop() { // Ubicamos el cursor en la primera posición(columna:0) de la segunda línea(fila:1) lcd.setCursor(0, 1); // Escribimos el número de segundos trascurridos lcd.print(millis()/1000); lcd.print(" Segundos"); delay(100); }
Ej 2. Desplazando el texto en el LCD
En este ejemplo para desplazar el texto usaremos la función scrollDisplayLeft(). El código es el siguiente:
#include <Wire.h> #include <LiquidCrystal_I2C.h> //Crear el objeto lcd dirección 0x27 y 16 columnas x 2 filas LiquidCrystal_I2C lcd(0x27,16,2); // void setup() { // Inicializar el LCD lcd.init(); //Encender la luz de fondo. lcd.backlight(); // Escribimos el Mensaje en el LCD en una posición central. lcd.setCursor(10, 0); lcd.print("Tecnología industrial 2"); lcd.setCursor(4, 1); lcd.print("Tutorial LCD, Test de desplazamiento "); } void loop() { //desplazamos una posición a la izquierda lcd.scrollDisplayLeft(); delay(500); }
El resultado será el texto desplazándose de derecha a izquierda.
PROYECTO A ENTREGAR :
En este proyecto realizaremos un montaje de un parking domótico donde utilizaremos leds, botones, pantalla lcd, servomotor y un sensor de ultrasonidos. Queremos realizar un montaje que controle las operaciones tanto en la entrada como en la salida de vehículos.
Para entrar habrá que pulsar obligatoriamente un botón. En ese momento tienen que sucederse las siguientes operaciones:
- El led rojo se apagará y se encenderá el verde
- El servo girará 90º para levantar la barrera durante 3 segundos. Al bajar la barrera cambiarán los leds encendidos, estando el rojo de nuevo encendido.
- En la pantalla LCD mostraremos un mensaje de bienvenida en la segunda línea. En la primera línea tiene que aparecer siempre fijo el número de plazas disponibles.
- El contador de plazas disponibles, que inicialmente estará a 10 (nuestro parking tiene 10 plazas), disminuirá en uno su valor. Si el valor es 0 y estamos pulsando el botón de entrada tenemos que visualizar un mensaje de parking lleno y no dejar levantar la barrera.
Para salir un coche no necesitará pulsar un botón, ya que pondremos un sensor de ultrasonidos que detecte cuando un coche está en la rampa de salida, para desencadenar todas las operaciones relacionadas: cambiar estado de led, mensaje de salida en LCD, girar servo y aumentar plazas disponibles.
No hay comentarios:
Publicar un comentario