• Página:
  • 1

TEMA: Arduino: Pantalla Serial LCD 128x64 (Tutorial)

Arduino: Pantalla Serial LCD 128x64 (Tutorial) hace 12 años 7 meses #75673

  • icaro8
  • Avatar de icaro8
  • DESCONECTADO
  • Administrador
  • ARGENTINA campeon (Brasil 2014)
  • Mensajes: 4023
  • Gracias recibidas 189
  • Karma: 2063
Este material NO es de mi autoria y nos fue enviado por el señor profesor diego nobile a quien la decimos muchas gracias

(tendré que invitarlo con un asado y algunos vinos )lo que mas me preocupa es la cantidad de vinos ,.-37




Tutorial Arduino: Pantalla Serial LCD 128x64

Esta imagen está oculta a usuarios invitados. Por favor, inicie sesión para poder verla.

A partir de hoy me voy a encargar de realizar tutoriales con productos de BricoGeek. Hoy empezamos esta serie de tutoriales con un producto que siempre mejora la apariencia y la utilidad de nuestros proyectos. Una pantalla LCD.
Las pantallas LCD nos permiten mostrar datos o información de nuestro proyecto. Si son gráficas como la que vamos a tratar hoy, nos permiten incluso mostrar dibujos, gráficas, paneles o casi todo lo que se nos pueda ocurrir. La única pega de estas pantallas es que para controlarlas necesitamos normalmente un mínimo de ocho pines.
Hoy os traemos una pantalla que aun a lo mejor de estos dos aspectos, es un gran LCD monocromo gráfico, pero que podemos controlar con solo un cable de datos.
No os perdáis el resto del tutorial así como el vídeo final con la demo gráfica...



Repasemos brevemente sus características:
LCD monocromo, gráfico 128x64 pixeles. 
Luz de fondo verde ajustable por software.
Contraste ajustable por potenciómetro incluido en placa.
Alimentación 6-7v (se puede alimentar perfectamente con el pin de 5v del Arduino)
Consumo 220mA con la luz de fondo al 100%
Entrada de datos: 0-5v 115200bps (velocidad por defecto, ajustable por software)
Dimensiones 7,6 x 5 x 1,5cm
Se trata de una pantalla LCD normal que trae soldado un modulo backpack, basado en el Atmega168. Lleva pregrabado un firmware que nos permite enviarle por serial un conjunto de comandos que nos brindan las siguientes posibilidades:
Escribir un texto.
Borrar hacia atrás texto.
Situar el "puntero de escritura" en unas coordenadas determinadas.
Dibujar o borrar un pixel, línea, círculo o cuadrado.
Borrar un espacio determinado de pantalla.
Invertir el fondo (verde sobre negro o negro sobre verde).*
Realizar una demo preprogramada.
Ajustar el porcentaje de luz de fondo.*
Activar o desactivar el logo de encendido.*
Cambiar el baudrate.*
Hay que reseñar que los ajustes que tienen asterisco son persistentes, es decir permanecen ajustados aunque quitemos la alimentación de la pantalla. Esto nos permite configurar estos parámetros una sola vez y que si no los modificamos no tengamos que cambiarlos en cada ejecución de nuestro código.
Empezaremos conectando el LCD a nuestro Arduino :

Esta imagen está oculta a usuarios invitados. Por favor, inicie sesión para poder verla.

Como veis las conexiones son muy sencillas y nos deja todos menos un pin del Arduino disponibles.

Ahora programaremos el Arduino con el código de configuración que podéis descargar al final del artículo. Mientras subimos el programa es normal que aparezcan símbolos raros en el LCD ya que programamos el Arduino a traves de el serie y el LCD tambien "ve" lo que mandamos. Podemos modificar el código a nuestro gusto, pero por defecto nos dejará el display configurado para que nos salga el logo de encendido, luz al 100% y comunicación a 115200 bps. Al final de la ejecución encenderá el led indicador del Arduino para que sepamos que ha terminado, y dejara un texto en pantalla para que podamos regular el contraste con el potenciómetro que se encuentra en la parte posterior del LCD. 

Esta imagen está oculta a usuarios invitados. Por favor, inicie sesión para poder verla.

El programa se quedará alternando cada diez segundos entre fondo oscuro y fondo claro. Debemos desconectar el cable que va a los 5v del Arduino cuando el fondo del LCD se muestre como deseamos. Esto es debido a que el comando solo alterna de un modo a otro y depende como este configurado la última vez. Al quitar la alimentación quedará configurado como estaba cuando se desconectó.

continua..................................................................... ,.-11 ,.-11 ,.-11
Última Edición: hace 12 años 7 meses por icaro8.
El administrador ha desactivado la escritura pública.

Re: Arduino: Pantalla Serial LCD 128x64 (Tutorial) hace 12 años 7 meses #75675

  • icaro8
  • Avatar de icaro8
  • DESCONECTADO
  • Administrador
  • ARGENTINA campeon (Brasil 2014)
  • Mensajes: 4023
  • Gracias recibidas 189
  • Karma: 2063
Esta imagen está oculta a usuarios invitados. Por favor, inicie sesión para poder verla.

Ahora sin conectar el display subiremos el código de ejemplo que he preparado exclusivamente para los lectores de BricoGeek. Lo podéis descargar al final del artículo. Una vez completemos la programación podemos apagar el Arduino, conectar el cable del LCD de nuevo y volver a encender el Arduino para ver la demo que os he programado.

El código de ejemplo es completamente reutilizable y contiene funciones con todos los comandos que soporta el firmware por defecto. Por ejemplo esta es la función que dibuja una línea:
view plaincopy to clipboardprint?
1. //dibuja o borra una linea
2. void linea (int desde_x, int desde_y, int hasta_x, int hasta_y, int on_off){
3. Serial.print(0x7C,BYTE);
4. Serial.print(0x0C,BYTE);
5. Serial.print(desde_x,BYTE);
6. Serial.print(desde_y,BYTE);
7. Serial.print(hasta_x,BYTE);
8. Serial.print(hasta_y,BYTE);
9. Serial.print(on_off,BYTE);
10. delay(20);
11. }
Dibujar una línea en toda la diagonal de la pantalla por ejemplo, es tan sencillo como escribir en nuestro código:
view plaincopy to clipboardprint?
1. linea(0,0,127,63,1);
Gráficos
Con el display tambien podemos mostrar nuestros dibujos, gráficos, o imágenes. Es tan sencillo como hacer un bucle que dibuje, o no, cada uno de los pixeles de la pantalla. Dentro del código os he preparado una función que se encarga exactamente de eso:
view plaincopy to clipboardprint?
1. void imagen (int desde_x, int desde_y, int ancho, int alto, PROGMEM prog_uint16_t *array){
2. q=0;
3. final=ancho+desde_x;
4. y=alto-1;
5. for (a = 0; a <= alto ; a++)
6. {
7. for (x = desde_x; x < final ; x=x+8)
8. {
9. temp = pgm_read_word_near(array + q);
10. for (z=x; z < (x+8); z++)
11. {
12. if (temp & 0x80)pixel(z,y,1);
13. temp= temp<<1;
14. }
15. q++;
16. }
17. y--;
18. }
19. }
"array" es una variable donde guardamos el estado de todos y cada uno de los pixeles de nuestra imagen de la forma:
view plaincopy to clipboardprint?
1. PROGMEM prog_uint16_t splash[] = { 0xFF, 0x80, ... , 0x00, 0x00};
Progmem sirve para almacenar la variable en memoria de programa ya que es una variable muy grande y nos podría dar problemas si la almacenamos normalmente.
Ahora bien, ¿como conseguimos pasar una imagen a esta tabla de datos? Estos son los pasos:
1. Convertimos nuestra imagen a un archivo bmp monocromo y de como máximo 128x64 pixeles. Esto es muy sencillo de realizar con el Paint de windows.
2. Nos bajamos este programa (pagina web del autor).
3. Lo ejecutamos, cargamos la imagen y lo configuramos así:

Esta imagen está oculta a usuarios invitados. Por favor, inicie sesión para poder verla.

Si le damos a SAVE OUTPUT y lo guardamos como .txt nos generara un archivo con los datos que necesitamos meter dentro de la variable.
Siguiendo estos pasos tendréis facilmente vuestros LCD mostrando lo que querais.
Os dejo con el vídeo en el que os enseño la demo que os he preparado.
TCRobotics


saludo desde la pcia bs as rep argentina ,.-32
Última Edición: hace 12 años 7 meses por icaro8.
El administrador ha desactivado la escritura pública.

Re: Arduino: Pantalla Serial LCD 128x64 (Tutorial) hace 12 años 7 meses #75676

  • icaro8
  • Avatar de icaro8
  • DESCONECTADO
  • Administrador
  • ARGENTINA campeon (Brasil 2014)
  • Mensajes: 4023
  • Gracias recibidas 189
  • Karma: 2063
link para la descarga al pdf


Esta imagen está oculta a usuarios invitados. Por favor, inicie sesión para poder verla.


this is the end ,.-9 ,.-9 ,.-9 ,.-9 ,.-9 ,.-9


saludos desde la pcia bs as rep argentina ,.-32
El administrador ha desactivado la escritura pública.

Re: Arduino: Pantalla Serial LCD 128x64 (Tutorial) hace 12 años 7 meses #75691

  • dago
  • Avatar de dago
  • DESCONECTADO
  • Oficial 1ª
  • Mensajes: 197
  • Karma: 2
icaro estoy comenzando con arduino pero no tengo ninguna experiencia en programacion.esta semana me entregaran uno q he comprado por internet de arduino uno y estoy de lo mas animado y aunque se que me tomará unos cuantos meses aprender me hace ilucion.conocía el 8051 y tabien he encargado un programador de pics pero espero ir paso a paso porque me queda grande de momento todo esto.
lo del lcd es muy interesante .
El administrador ha desactivado la escritura pública.

Re: Arduino: Pantalla Serial LCD 128x64 (Tutorial) hace 12 años 6 meses #75728

  • icaro8
  • Avatar de icaro8
  • DESCONECTADO
  • Administrador
  • ARGENTINA campeon (Brasil 2014)
  • Mensajes: 4023
  • Gracias recibidas 189
  • Karma: 2063
dago escribió:
icaro estoy comenzando con arduino pero no tengo ninguna experiencia en programacion.esta semana me entregaran uno q he comprado por internet de arduino uno y estoy de lo mas animado y aunque se que me tomará unos cuantos meses aprender me hace ilucion.conocía el 8051 y tabien he encargado un programador de pics pero espero ir paso a paso porque me queda grande de momento todo esto.
lo del lcd es muy interesante .

ser dago para recorrer un camino de 10000 km solo hace falta dar el primer paso .

aprenderemos y tomaremos experiencia juntos ,es mas la idea es poder intercambiar experiencias y conocimientos ,

la idea que se persigue en estas salas es justamente tratar de dar el gran salto tecnológico ,animarse ya que estoy íntimamente convencido que es la manera mas efectiva de marcar la diferencia positiva en muchos aspectos ,económicos intelectuales y mas ,mucho mas .

saludos y seguimos en contacto ,.-11 ,.-11
El administrador ha desactivado la escritura pública.

Re: Arduino: Pantalla Serial LCD 128x64 (Tutorial) hace 12 años 6 meses #76005

  • dago
  • Avatar de dago
  • DESCONECTADO
  • Oficial 1ª
  • Mensajes: 197
  • Karma: 2
ya tengo uno y estoy paso a paso.. Esta imagen está oculta a usuarios invitados. Por favor, inicie sesión para poder verla.
Adjuntos:
  • Adjunto Esta imagen está oculta a usuarios invitados. Por favor, inicie sesión para poder verla.
Última Edición: hace 12 años 6 meses por dago.
El administrador ha desactivado la escritura pública.
  • Página:
  • 1
Moderadores: pepekelvin
Tiempo de carga de la página: 0.191 segundos

Entrar or Crear una cuenta

El acceso a nuestra web implica la utilización de cookies con el objeto de reconocer a los usuarios que se hayan registrado y poder ofrecerles un mejor servicio y más personalizado así como información técnica. Para saber mas sobre nuestro uso de las cookies y como tratarlas vea nuestro aviso legal.

Acepto cookies de este sitio web.

EU Cookie Directive Module Information