viernes, 16 de enero de 2015

Arduino: El LCD 16x2

Después de ver como funcionan los pulsadores le toca el turno al LCD. El LCD (Liquid Crystal Display por sus siglas en ingles) es una pantalla delgada y plana  formada por pixeles. Una de las mejores cualidades de este tipo de pantallas es su bajo consumo.


Este tipo de pantallas se utilizan en gran variedad de aparatos electrónicos dada su simplicidad tanto en conexiones como en su utilización. En ella se pueden reflejar desde un simple texto tipo "hello World", hasta coordenadas GPS o cualquier tipo de variable que quepa en sus 16 caracteres.
También las hay de diferentes medidas, con mas o menos caracteres.
En este ejemplo en particular usaremos la típica de 16x2.
Primero explicare cuales son sus conexiones:


  • VSS o GND: Este pin del LCD es el pin conectado a masa (-)
  • VDD: Este pin es la alimentación del LCD y se conecta a +5V
  • Vo: Es el pin del contraste,  Este pin no esta siempre presente, pero si tu LCD lo tuviera, hay que conectarlo a un potenciómetro para poder regular el contraste, si lo conectas directamente a GND la pantalla no se vera correctamente.
  • RS: Es el pin de selección de registros que controla en que parte de la memoria del  LCD esta escribiendo los datos.
  • R/W: Modo de lectura o escritura. Este pin va conectado normalmente a masa (GND)
  • E: Este pin habilita los registros. (Enable)
  • DB0...DB7: Son los 8 pines de datos.
  • A: Ánodo del LED de iluminación del LCD (+)
  • K: Cátodo del LED de iluminacion del LCD (-)

Su conexión con Arduino seria la siguiente:


Para facilitar el uso del LCD Arduino tiene una libreria llamada "LiquidCrystal.h" que hará mucho más fácil la utilización de este dispositivo, dentro de esta librería están los siguientes comandos:

  • lcd.begin(); Especifica las dimensiones del display LCD (ancho y alto)
  • lcd.clear(); Borra la pantalla del display LCD y posiciona el cursor en la esquina superior izquierda
  • lcd.home(); Posiciona el cursor en la esquina superior izquierda. Se trata de la posición donde aparecera el siguiente texto escrito en el display. a diferencia de clear() no borra el contenido anterior del display
  • lcd.setCursor(); Establece la posición del cursor donde empezaran a aparecer los siguientes caracteres escritos en el LCD
  • lcd.write(); Escribe un carácter en el LCD.
  • lcd.print(); Imprime un texto en el LCD
  • lcd.cursor(); Muestra el cursor en el LCD: un guion bajo en la posición donde se escribirá el siguiente carácter. 
  • lcd.noCursor(); Oculta el cursor.
  • lcd.blink(); Muestra el cursor del LCD parpadeando, se utiliza en combinación cursor(), el resultado dependerá de la pantalla particular.
  • lcd.noBlink(); Desactiva el cursor parpadeando
  • lcd.display(); Enciende la pantalla después de haberla apagado con noDisplay(), esto restablecerá el texto y el cursor que estaba en la pantalla.
  • lcd.noDisplay(); Apaga la pantalla sin perder el texto que aparece en ella
  • lcd.scrollDisplayLeft(); Desplaza el contenido de la pantalla (texto y cursor) un espacio hacia la izquierda.
  • lcd.scrollDisplayRight(); Desplaza el contenido de la pantalla (texto y cursor) un espacio hacia la derecha
  • lcd.autoscroll(); Activa el desplazamiento automático de la pantalla LCD. Esto hace que con cada salida de un nuevo carácter desplace al anterior un espacio. Si la dirección es de izquierda a derecha (por defecto), la pantalla se desplaza a la izquierda y si la dirección de derecha a izquierda, la pantalla se desplaza a la derecha. Esto hace que cada nuevo carácter salga siempre en la misma ubicación. 
  • lcd.noAutoscroll(); Desactiva el desplazamiento automático.
  • lcd.leftToRight(); Ajusta la dirección para el texto escrito en la pantalla de izquierda a derecha, no afecta al texto previamente escrito en la pantalla.
  • lcd.rightToLeft(); Ajusta la dirección para el texto escrito en la pantalla de derecha a izquierda, no afecta al texto previamente escrito en la pantalla.
  • lcd.createChar(); Crea un carácter personalizado para usarlo en la pantalla. Se admiten hasta 8 caracteres de 5x8 pixeles numerados de 0 a 7.
Bien, ahora que sabemos como se conecta el display LCD y cuales son los comandos que utiliza esta librería, vamos a ver unos ejemplos de como mostrar textos la pantalla, empezare por los más simples e iré ampliando en sucesivos articulos.

Para empezar, el más sencillo es el mítico "Hello world" el cual mostrara este mensaje en la parte superior de nuestra pantalla LCD. Lo podéis encontrar en los mismos ejemplos que trae el programa de Arduino en Archivo > Ejemplos > LiquidCristal > HelloWorld. Para el Blog he programado uno un poco más complejo, donde, además de escribir, limpia la pantalla y da varios mensajes más.
Es este:

 
#include "liquidcrystal" //Incluimos la libreria "LiquidCristal

// Configuramos los pines 12=RS 11=E 5,4,3,2=pines de control
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 

void setup() {
  lcd.begin(16, 2); //Configuramos los números de filas y de columnas
  }

void loop() {
  lcd.setCursor(0,0); // Situa el cursor en la primera posición de la primera línea
  lcd.print(" Bienvenidos a ");  // Escribe el texto entre comillas
  lcd.setCursor(1, 1);          // Situa el cursor en la segunda posición de la segunda línea
  lcd.print("Infotronikblog");  // Escribe el texto entre comillas
  delay (5000);  //Hace una pausa de 5000ms (5seg)

  lcd.clear();    //Limpia la pantalla
  lcd.setCursor(3,0);        // Situa el cursor en la cuarta posición de la primera línea
  lcd.print("Ejemplo de");   // Escribe el texto entre comillas
  lcd.setCursor(0,1);        // Situa el cursor en la primera posición de la segunda línea
  lcd.print("escritura en LCD");  // Escribe el texto entre comillas
  delay(10000);    //Hace una pausa de 10000ms (10seg)

  lcd.clear();    //Limpia la pantalla
  lcd.setCursor(0,0);            // Cursor en la primera posición de la primera línea
  lcd.print("Gracias por ver");  // Escribe el texto entre comillas
  lcd.setCursor(3,1);            // Cursor en la cuarta posición de la segunda línea
  lcd.print("el video");         // Escribe el texto entre comillas
  delay(10000);      // Hace una pausa de 10000ms (10seg)
}


Bueno espero que les haya gustado y proximamente incluiré más ejemplos con diferentes efectos.
Saludos!!!

3 comentarios :

  1. Donde puedo comprar todos los componentes que usaste? :D buen video salduos

    ResponderEliminar
    Respuestas
    1. Buenas!!! Por donde vivo no hay muchas tiendas (ninguna) que se dedique a esto, así que lo compro todo en eBay.com Saludos!!!

      Eliminar
  2. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar