Un "Character LCD" es una matriz de puntos en una pantalla de cristal liquido (dot matrix liquid crystal display). Estos LCD permiten mostrar caracteres alfanuméricos con una simple interfase la cual se puede conectar a un microcontrolador (para este caso un Raspberry Pi).
En esta demo se van a usar un Character LCD 16x2, Raspberry Pi y un controlador escrito en Java Micro Edition Embedded, mas algunos accesorios.
Lista completa de Componentes*:
- Raspberry Pi Model B+
- Character LCD 16x2 (RGB backlight positive) + extras, este solo muestra caracteres Ingles/Japones.
- Wire Jumpers
- Protoboard
- Adafruit T-Cobbler Plus Kit
*Este demo esta construido con los productos que venden directamente Adafruit o sus distribuidores, ver nota al final de la pagina.
Armado (Cableado)
Primero se empezara colocando los dispositivos en la protoboard como se muestra en la siguiente imagen:
Luego se realizara el cableado de la siguiente forma:
- Conecte el RPi 5.0V a la linea (vcc) de la protoboard, y de este conecte:
- Un cable al pin derecho del potenciometro.
- Un cable al pin 2 del LCD (VDD).
- Un cable al pin 15 del LCD (LED+).
- Conecte el RPi GND a linea de tierra de la protoboard, y de este conecte:
- Un cable al pin izquierdo del potenciometro.
- Un cable al pin 1 del LCD (VSS).
- Un cable al pin 5 del LCD (R/W).
- Conecte el pin del medio del potenciometro al pin 3 del LCD (V0/contrast).
- Conecte el pin 27 del RPi al pin 4 del LCD (RS).
- Conecte el pin 22 del RPi al pin 6 del LCD (E/clock enable).
- Conecte el pin 25 del RPi al pin 11 del LCD (DB4).
- Conecte el pin 24 del RPi al pin 12 del LCD (DB5).
- Conecte el pin 23 del RPi al pin 13 del LCD (DB6).
- Conecte el pin 18 del RPi al pin 14 del LCD (DB7).
- Conecte el pin 4 del RPi al pin 16 del LCD (-R/red).
- Conecte el pin 17 del RPi al pin 17 del LCD (-G/green).
- Conecte el pin 7 / CE1 del RPi al pin 18 del LCD (-B/blue).
La conexion solo usa 4 bits para la transferencia de datos DB4 a DB7. Por tal motivo queda 4 pines del LCD sin conectar. No se esta conectando directamente el Raspberry Pi, sino que se hace por medio de T-Cobbler y su respectivo cable de 40 pin.
En el prototipo se ve así:
En la realidad se ve así:
Nota: Cuando este realizando la prueba de funcionamiento no olvide ajustar el potenciometro para ajustar el contraste del LCD, de lo contrario es posible que la luz de fondo se encienda y no vean caracteres en la pantalla.
Controlador (Sotfware JMEE)
Instalación
Se necesita tener instalado el ambiente de desarrollo para Java Micro Edition Embedded; para saber como se instala ver este entrada: Instalación Java ME Embedded
Luego de la instalación del ambiente podemos descargar el código del repositorio:
git clone https://github.com/andrexweb/raspberry-pi.git
Uso
Cuando se ha descargado el código, se procede a abrir el proyecto con Netbeans, procedemos a abrir la clase rpi.main.Main, en esta clase observaremos los ejemplos que podemos correr, por defecto esta habilitado un ejemplo base:
exampleCharLCD = new char_lcd();
//exampleCharLCD = new char_lcd_rgb();
//exampleCharLCD = new char_lcd_rgb_pwm();
//exampleCharLCD = new char_lcd_rgb();
//exampleCharLCD = new char_lcd_rgb_pwm();
Si usamos el ejemplo "char_lcd_rgb()" con el Character LCD 16x2 RGB backlight, podemos variar la luz de fondo del LCD; El ejemplo char_lcd_pwm(), deberia de mostrar una amplia gama de colores pero no es posible en un Raspberry Pi, no tiene GPIO con PWM, y la emulación por código en Java no es muy eficiente además de un alto consumo de CPU.
Si se ha seguido el manual al pie de la letra, los ejemplos han de funcionar bien, en caso de no usar los GPIO del Raspberry Pi como se indico anteriormente, se debe abrir la clase de cada ejemplo y cambiar los parámetros, es decir indicar cuales GPIO fueron usados. Se debe reemplazar los usados.
Archivo: char_lcd_rgb.java o char_lcd.java
//# Raspberry Pi configuration:
int lcd_rs = 27; //# Change this to pin 21 on older revision Raspberry Pi's
int lcd_en = 22;
int lcd_d4 = 25;
int lcd_d5 = 24;
int lcd_d6 = 23;
int lcd_d7 = 18;
int lcd_red = 4;
int lcd_green = 17;
int lcd_blue = 7; //# Pin 7 is CE1
//# Raspberry Pi configuration:
int lcd_rs = 27; //# Change this to pin 21 on older revision Raspberry Pi's
int lcd_en = 22;
int lcd_d4 = 25;
int lcd_d5 = 24;
int lcd_d6 = 23;
int lcd_d7 = 18;
int lcd_red = 4;
int lcd_green = 17;
int lcd_blue = 7; //# Pin 7 is CE1
Para configurar la cantidad de lineas que soporta el LCD se debe de cambiar los parámetros por uno de estas opciones: 16x1, 16x2 y 16x4
Archivo: char_lcd_rgb.java
//# Define LCD column and row size for 16x2 LCD.
int lcd_columns = 16;
int lcd_rows = 2;
//# Define LCD column and row size for 16x2 LCD.
int lcd_columns = 16;
int lcd_rows = 2;
Para visualizar un mensaje con luz de fondo rojo seria de la siguiente forma:
//# El color esta en RGB, pero debido a la falta de PWM, solo funciona 1.0f o 0.0f en cada color.
lcd.set_color(1.0f, 0.0f, 0.0f);
lcd.clear();
lcd.message("Linea 1\nLinea 2");
lcd.set_color(1.0f, 0.0f, 0.0f);
lcd.clear();
lcd.message("Linea 1\nLinea 2");
*PWM: modulación por ancho de pulsos (pulse-width modulation).
La clase que hace de controlador es Adafruit_CharLCD, en esta clase están los métodos con los cuales es posible realizar la comunicación entre el Raspberry Pi y el Character LCD, el LCD debe ser compatible con Hitachi HD44780 LCD controller, en caso de que no sea compatible hay que escribir un nuevo controlador.
La clase principal proporciona los siguientes métodos:
- home(): posiciona el cursor al inicio.
- clear(): limpia el LCD
- set_cursos(col,row): posiciona el cursor en la columna y linea indicada.
- show_cursos(show): muestra el cursor en pantalla.
- move_left() y move_right(): mueve el texto en el LCD, a la izquierda o a la derecha.
- message(text): el mensaje a mostrar.
- set_backlight(backlight) para el caso de la clase Adafruit_CharLCD.java activa o desactiva la luz de fondo, para mostrar un color particular usar la clase Adafruit_RGBCharLCD.java y usar el método set_color(R,G,B).
Nota: Esta es una implementación en Java ME Embedded del código que esta disponible por parte de Adfruit, el código original esta escrito en Python. Para ver el tutorial y código en Python dirigirse a la pagina de Adafruit.
- Pagina: Adafruit
- Tutorial: Character LCD with Raspberry Pi or BeagleBone Black
- Codigo: Adafruit Python CharLCD
Raspberry Pi is a trademark of the Raspberry Pi Foundation, http://www.raspberrypi.org
Adafruit, http://www.adafruit.com
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. http://www.oracle.com
No hay comentarios:
Publicar un comentario