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