0% encontró este documento útil (0 votos)
158 vistas9 páginas

GLCD PDF

Este documento describe cómo usar una pantalla gráfica LCD (GLCD) de 128x64 píxeles con un controlador KS0108. Explica cómo conectar la pantalla, incluir la librería U8glib para facilitar la programación, y cómo escribir texto e imágenes mediante subrutinas llamadas dentro de un bucle de pintado.

Cargado por

Diego A
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
158 vistas9 páginas

GLCD PDF

Este documento describe cómo usar una pantalla gráfica LCD (GLCD) de 128x64 píxeles con un controlador KS0108. Explica cómo conectar la pantalla, incluir la librería U8glib para facilitar la programación, y cómo escribir texto e imágenes mediante subrutinas llamadas dentro de un bucle de pintado.

Cargado por

Diego A
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Colegio Industrial N° 4 | Tecnicatura en Electrónica

Sistemas de Electrónica de Control | Tec. Alvarado Diego


Colegio Industrial N° 4 | Tecnicatura en Electrónica

GLCD

INTRODUCCIÓN

Los LCD alfanuméricos poseen grandes prestaciones prácticas pero tienen también cierta rigidez a la hora de presentar la
información en pantalla: no se puede, por ejemplo, exteriorizar ondas, dibujos, ni logos. Un paso más allá de los LCD
alfanuméricos son los LCD gráficos (o GLCD) compuestos por una matriz continua de pixeles (no agrupados como en los
anteriores). En ellos es factible representar de forma monocromática y mediante un mapa de bits algún dibujo, logo o incluso
animación. Celulares como el Nokia 1100 o Motorola C115 poseían pantallas con estas características. Vienen de diversas
dimensiones, entre ellas 128x64 pixeles, 240x128, 240x64, entre otros. Suelen poseer luz de fondo verde o azul. Vienen con
controladores incorporados, para que su manejo se simplifique.

Esta guía está basada en el GLCD marca WINSTAR de 128x64 puntos y de comunicación paralela; aunque la librería utilizada y
descrita más adelante soporta un gran número de displays distintos.

CARACTERISTICAS

Como anexo se presenta el datasheet de la pantalla. Algo sumamente importante a tener en cuenta es el controlador con el
que viene el display. Leyendo las características se puede observar que en este caso en particular contamos con un
controlador NT 7108 (compatible al KS0108).

Sistemas de Electrónica de Control | Tec. Alvarado Diego


Colegio Industrial N° 4 | Tecnicatura en Electrónica

Sistemas de Electrónica de Control | Tec. Alvarado Diego


Colegio Industrial N° 4 | Tecnicatura en Electrónica

LIBRERÍA U8glib Y CONEXIONADO

La U8glib es una librería para Arduino creada para simplificar la tarea de mostrar información en pantallas pequeñas. Soporta
un gran número de controladores, entre ellos el KS0108.

Se puede descargar desde la página [Link] y se la debe instalar desde la IDE de Arduino:

Programas > Include Library > Add .ZIP Library

Una gran forma de aprender a utilizar esta librería y a manejar los LCD gráficos es a través de la interpretación de los
programas de ejemplo que vienen. Ahora se desarrollará la programación básica para poder escribir en la pantalla.

1. Incluir la librería.
Programas > Include Library > U8glib

Nos aparecerá en el cuadro de la programación lo siguiente:

#include <U8glib.h>

2. Seleccionar controlador y detallar la conexión de los pines: debido a que esta librería está diseñada para un gran
número distinto de chips controladores, debemos especificar cuál de estos tiene nuestro display. Papa poder
observar la lista completa de controladores soportados nos dirigimos a la página
[Link] o consultar el anexo a este apunte. La primer columna especifica el
controlador, la segunda el tamaño.

La octava columna nos indica cómo debemos realizar la conexión de pines. En nuestro caso tenemos el controlador
KS0108:

U8GLIB_KS0108_128(d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw [, reset])

La conexión con el reset es optativa y por eso se encuentra entre corchetes. Se recomienda realizar la misma
conexión al Arduino que en los ejemplos que trae:

U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16);

Sistemas de Electrónica de Control | Tec. Alvarado Diego


Colegio Industrial N° 4 | Tecnicatura en Electrónica

3. Antes de dibujar o de escribir textos vamos a ver el contexto de la programación. Los dibujos se organizan
preferentemente de forma individual en subrutinas. Cuando se la desea imprimir en pantalla se llama a la subrutina
dentro de un Bucle de pintado. La programación está comentada para su comprensión.

#include <U8glib.h>
U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16);

void dibujo1(){

}

void dibujo2(){

}

void setup() {…]

void loop(){
//BUCLE DE PINTADO
[Link](); //inicia el proceso de dibujo
do{
dibujo1(); //se llaman a las subrutinas de dibujo
dibujo2();
}while([Link]()==1) //¿se ha acabado de dibujar? 1:no 0:si

delay(500); //redibuja después de una pausa

Dentro de las subrutinas de dibujo podemos incluir texto, dibujos o formas.

TEXTO

A la hora de escribir textos en la pantalla tenemos que tener en cuenta un par de cosas: la posición de escritura, la fuente de
la letea , su tamaño y el punto de referencia en donde el texto comienza a dibujarse.

Existe un gran número de tamaños y fuentes de letras, todas disponibles en la página de la librería U8glib o en el anexo que
se presenta a este apunte. Basta con escribir el código correspondiente antes del texto en cuestión:

[Link](fuente);

Por ejemplo:

[Link](u8g_font_courB14);

Sistemas de Electrónica de Control | Tec. Alvarado Diego


Colegio Industrial N° 4 | Tecnicatura en Electrónica

Supongamos que queremos escribir (ABg). Antes de hacerlo debemos tener en cuenta cuál va a ser el punto de referencia en
donde comienza el dibujo. Existen tres posibilidades:

Tomar como referencia para escribir el punto de arriba a la izquierda:

[Link]();

Tomar como referencia para escribir el punto central a la izquierda:

[Link]();

Tomar como referencia para escribir el punto base a la izquierda:

[Link]();

Una vez que seleccionamos l fuente, y el punto de referencia, se puede comenzar a escribir mediante el siguiente comando:

[Link](columna, fila, ”texto a imprimir”);

La columna y fila establecen en donde se ubicará el punto de referencia seleccionado para empezar a imprimir. Recordar que
todo esto se debe colocar en una subrutina que luego se debe llamar en el bucle de pintado. Por ejemplo:

Sistemas de Electrónica de Control | Tec. Alvarado Diego


Colegio Industrial N° 4 | Tecnicatura en Electrónica

void texto1(){
[Link](u8g_font_gdr11); //fuente
[Link](); //punto de referencia
[Link](5, 20, "Industrial 4");
}

void texto2(){
[Link](u8g_font_baby); //fuente
[Link](); //punto de referencia
[Link](4, 64, "Rio Gallegos | Santa Cruz");
}

void setup() {…]

void loop(){
//BUCLE DE PINTADO
[Link](); //inicia el proceso de dibujo

do{
texto1(); //se llaman a las subrutinas de dibujo
texto2();

}while([Link]()==1) //¿se ha acabado de dibujar? 1:no 0:si

delay(500); //redibuja después de una pausa

IMAGEN

1. Pasar la imagen al tamaño adecuado (en este caso 128x64 pixeles). Se deben elegir imágenes con poco detalle y
preferentemente monocromática.

2. Hacerla monocromática. Para los pasos 1 y 2 se pueden emplear las herramientas que la página
[Link] ofrece.
3. Es conveniente retocarla con algún editor de imágenes como Paint, GIMP, o Photoshop.
4. Convertirla en un array de bytes. Para ello dirigirse al siguiente link:
[Link]/hacker-tools/image-to-byte-array/
5. Crear una constante al principio del programa con los bytes entregados por la página:

const uint8_t dibujo [] U8G_PROGMEM = {

0xff, 0x0, 0x8, 0x0, 0x0, 0xff, 0xff, 0xcf, 0xff, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0,
0x1f, 0xfe, 0x0, 0x8, 0x0, 0x0, 0x0, 0xff, 0xfb, 0xfc, 0x1, 0xf8, 0x0, 0x0, 0x0,
...}

Sistemas de Electrónica de Control | Tec. Alvarado Diego


Colegio Industrial N° 4 | Tecnicatura en Electrónica

6. Llamarlo dentro del bucle de dibujo:

u8g . drawBitmapP ( columna, fila, ancho en bytes, alto en bits, nombre);

Columna y fila indican en donde queremos comenzar a dibujarlo. El ancho en bytes del dibujo, y su alto en bits. El
nombre se refiere a cómo se llama el array de bytes.

Por ejemplo:

u8g . drawBitmapP ( 0 , 0 , 8 , 64, dibujo );

Sistemas de Electrónica de Control | Tec. Alvarado Diego


Colegio Industrial N° 4 | Tecnicatura en Electrónica

PROYECTO #1 PWM
CONTROL DE VELOCIDAD DE UN MOTOR DE C.C.

Diseñe el sistema para poder controlar la velocidad de un motor de corriente continua a través de la computadora. Se debe
ingresar el porcentaje de trabajo deseado. En caso de ingresar valores erróneos se debe mandar un mensaje al bus serie.

Tenga en cuenta que el motor de corriente continua se alimenta a una tensión mucho mayor que la que puede el Arduino
entregar.

Modifique su diseño para que, además de la velocidad, se pueda seleccionar el sentido de giro.

Sistemas de Electrónica de Control | Tec. Alvarado Diego

También podría gustarte