Archivo de la categoría: LCD

Poniéndolo Expresión al ArduRobot

Bueno, ya era hora de poner una cabeza al ArduRobot. He aprovechado la anterior entrada para realizar una iniciación al control de un LCD con Arduino.

Como bien sabéis la placa que controla el Robot es un Arduino UNO y éste tiene sus salidas casi saturadas, por lo que para el control del LCD he tenido que utilizar otro controlador. Es el Arduino Nano.

Para que el ordenador me reconociese el Arduino Nano, he tenido que instalar unos driver exprofeso para esta placa (puede ser por que el procesador es Chino :)). Los Arduino Nano chinos suelen llevar el chip ch340 en vez el FTDI. En el Fórum de Arduino puedes encontrar más información al respecto

Le he dado muchas vueltas a que expresiones quería que tuviese el robot y al final he decidido que con cinco expresiones para empezar podría ser suficiente:

  • Normal
  • Triste
  • Feliz
  • Enfadado
  • Sorpresa

En el futuro dotaré al robot de más expresiones.

Para dotar de expresión al Robot, he utilizado la posibilidad que me ofrece la librería “Adafruit_GFX.h” de representar imágenes Bitmap. Más abajo podréis ver un ejemplo de un bitmap de una cara de sorpresa.

Con la impresora 3D he realizado una carcasa que utilizo para meter en su interior al Arduino Nano y la pantalla LCD.

Representación 3D de la Cabeza

Circuito Práctico.

Programa Arduino

Ejemplo del Código del PROGMEM CaraSorpresa

Fotos

Visión 3D del ArduRobot

Códigos Fuente

Cabeza_Robot.ino

Vídeo resumen:

Anuncios

Pantalla LCD Nokia 5110

En esta entrada trataré de explicar como utilizar el LCD del Nokia 5110. Es una pantalla pequeñas, de 1.5″, pero tienen buena legibilidad. Su resolución es de 84 x 48 pixel, internamente emplea un controlador PCD8544 desarrollado por Philips, un controlador de bajo consumo diseñado para manejar pantallas monocromas de 48 filas y 84 columnas. Para mayor legibilidad estos displays suelen incorporar una luz trasera (back light).

Sus características se pueden encontrar aquí.

La configuración de pines que voy a utilizar es:

Número de Pin

Nombre de Pin Arduino Pin Función de Pin Notas

1

RST

3

Reset

10kΩ

2

CE

4

Chip Selection (Selección de chip)

10kΩ

3 DC 5

Data/Commands choice

10kΩ

4

DIN

6

Serial data in

10kΩ

5

CLK 7

Serial clock

10kΩ

6

VCC

3,3 Vcc

Positive power supply (Alimentación positiva) 2.7V a 3.3V

7

LIGHT

GND

LED backlight supply Conectar a GND para máximo brillo

8

GND

GND

Ground (Tierra)

Existen varias librerías que funcionan con este LCD. Aquí explicaremos la librería más común para este modelo, “ Adafruit PCD8544 Nokia 5110 LCD library “. Esta librería posee una gran variedad de gráficos, entre ellos círculos, líneas, cuadros, triángulos, además de varios tipos de fuentes y la posibilidad de imprimir imágenes como logos o figuras.

Esta librería requiere de la instalación adicional de la librería gráfica “ GFX “ para su utilización.

En la siguiente dirección podréis ver un resumen de algunos de los procedimientos que tiene la librería “Adafruit_GFX.h”.

Circuito Práctico.

Programa Arduino

Fotos

Plano general del Circuito

Detalle de la Pantalla LCD

Códigos Fuente

LCD_Nokia_5110.ino

Vídeo resumen:

Pantalla LCD

Antes de empezar este post, he de advertir lo siguiente:

  • Hay “LCDKeypad Shield” que vienen defectuosos debido a que el potenciómetro que gradúa la intensidad de la pantalla esta mal. La solución es bien fácil, basta con sustituirlo por otro de característica similares (10k).
  • Hay que verificar cuales son los pines de “rs”, “enable”, “d4”, “d5”, “d6” y “d7” en los ejemplos de Arduino son “12, 11, 5, 4, 3 y 2” pero en el que yo compré eran “8, 9, 4, 5, 6, 7”.
  • Hay placas que les faltan la resistencia limitadora del transistor de iluminación de pantalla y producen un sobrecalentamiento en el integrado, pudiendo destruirlo. Consumos superiores a 85 mA, hay que mirarlo (la mía consume 45mA).
  • Hay placas que les falta el led PWR (la mía).

La conclusión que hay que sacar es la siguiente: cuidado al comprar y donde se compra, el riesgo existe.

Biblioteca LiquidCrystal

Biblioteca que permite controlar una pantallas LCD basada en el Hitachi HD44780 o compatibles. La biblioteca trabaja en modo 4 u 8 líneas de datos. 

LiquidCrystal ()

Descripción

Crea una variable de tipo LiquidCrystal . La pantalla se puede controlar por medio de 4 u 8 líneas de datos. En el primer caso, hay que omitir los pines del D0 a D3 y dejar las líneas desconectadas. El pin RW puede ser puesto a la tierra en vez de conectado a un pin de la placa Arduino, y si es así, omitirlo en los parámetros de esta función.

Sintaxis

LiquidCrystal (rs, enable, d4, d5, d6, d7)

LiquidCrystal (rs, rw, enable, d4, d5, d6, d7)

LiquidCrystal (rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)

LiquidCrystal (rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)

Parámetros

rs: es el número del pin de Arduino que está conectado a la patilla RS en la pantalla LCD

rw: es el número del pin de Arduino que está conectado a la patilla RW en la pantalla LCD ( opcional )

enable: el número del pin de Arduino que está conectado a la patilla de habilitación en la pantalla LCD

d0, d1, d2, d3, d4, d5, d6, d7: Números de los pines de Arduino que están conectados a los pines de datos correspondientes en la pantalla LCD. La línea de datos d0, d1, d2 y d3 son opcionales, si se omite, la pantalla LCD se puede controlar utilizando sólo las cuatro líneas de datos d4, d5, d6, d7.  

begin ()

Descripción

Especifica las dimensiones (anchura y altura) de la pantalla.

Sintaxis

lcd.begin (columnas, filas)

Parámetros

lcd: variable de tipo LiquidCrystal

columnas: es el número de columnas que tiene la pantalla.

filas: es el número de filas que tiene la pantalla.

clear ()

Descripción

Borra la pantalla LCD y posiciona el cursor en la esquina superior izquierda.

Sintaxis

lcd.clear ()

Parámetros

lcd: variable de tipo LiquidCrystal

setCursor ()

Descripción

Coloca el cursor en la posición en la que se mostrará el texto siguiente escrito a la pantalla LCD.

Sintaxis

lcd.setCursor (columna, fila)

Parámetros

lcd: variable de tipo LiquidCrystal

columna: es la posición del cursor respecto a la columna (siendo 0 la primera columna).

fila: es la fila en la que colocar el cursor (siendo 0 la primera fila). 

print ()

Descripción

Imprime el texto a la pantalla LCD.

Sintaxis

lcd.print (datos)

lcd.print (datos, base)

Parámetros

lcd: variable de tipo LiquidCrystal

datos: datos para imprimir (char, byte, int, long o string)

base(opcional): la base en la que imprimir el números: BIN para binario (base 2), DEC para  decimal (base 10), OCT para octal (base 8), HEX para hexadecimal (base 16).

Devuelve

byte
print () devolverá el número de bytes escritos. 

write ()

Descripción

Imprime un carácter en la pantalla LCD.

Sintaxis

lcd.write (datos)

Parámetros

lcd: variable de tipo LiquidCrystal

datos: caracter para imprimir en la pantalla 

Devuelve

byte
write () devolverá el número de bytes escritos. 
 

cursor ()

Descripción

Muestra el cursor del LCD: un guión bajo (línea) en la posición en que se escribirá el siguiente carácter.

Sintaxis

lcd.cursor ()

Parámetros

lcd: variable de tipo LiquidCrystal

noCursor ()

Descripción

Oculta el cursor LCD.

Sintaxis

lcd.noCursor ()

Parámetros

lcd: una variable de tipo LiquidCrystal

blink ()

Descripción

Muestra el cursor LCD parpadeando. Si se utiliza en combinación con la función cursor(), el resultado dependerá de la pantalla en particular.

Sintaxis

lcd.blink ()

Parámetros

lcd: variable de tipo LiquidCrystal  

noBlink ()

Descripción

Desactiva el parpadea del cursor LCD.

Sintaxis

lcd.noBlink ()

Parámetros

lcd: una variable de tipo LiquidCrystal

display ()

Descripción

Enciende la pantalla LCD, después de haber sido apagados con nodisplay(). Esto restaurará el texto y cursor que estaba en la pantalla.

Sintaxis

lcd.display ()

Parámetros

lcd: variable de tipo LiquidCrystal 

nodisplay ()

Descripción

Apaga la pantalla LCD, sin perder el texto que se muestra actualmente en él.

Sintaxis

lcd.nodisplay ()

Parámetros

lcd: variable de tipo LiquidCrystal 

scrollDisplayLeft ()

Descripción

Desplaza el contenido de la pantalla (texto y cursor) un espacio hacia la izquierda.

Sintaxis

lcd.scrollDisplayLeft ()

Parámetros

lcd: variable de tipo LiquidCrystal 

scrollDisplayRight ()

Descripción

Desplaza el contenido de la pantalla (texto y cursor) un espacio a la derecha.

Sintaxis

lcd.scrollDisplayRight ()

Parámetros

lcd: variable de tipo LiquidCrystal

LeftToRight ()

Descripción

Defina la dirección para el texto escrito en la pantalla LCD de izquierda a derecha, el valor predeterminado. Esto significa que los caracteres escritos posteriores en la pantalla irán de izquierda a derecha, pero no afecta al texto previamente escrito.

Sintaxis

lcd.LeftToRight ()

Parámetros

lcd: variable de tipo LiquidCrystal

RightToLeft ()

Descripción

Defina la dirección para el texto escrito en la pantalla LCD de derecha a izquierda (por defecto es de izquierda a derecha). Esto significa que los caracteres escritos posteriores en la pantalla lo harán de derecha a izquierda, pero no afecta al texto previamente escrito.

Sintaxis

lcd.RightToLeft ()

Parámetros

lcd: variable de tipo LiquidCrystal 

createChar ()

Descripción

Crea un caracter personalizado para su uso en la pantalla LCD. Hasta un máximo de ocho caracteres de 5×8 píxeles son compatibles numerados del 0 al 7. La aparición de cada carácter personalizado se especifica por una serie de ocho bytes, uno para cada fila. Los cinco bits menos significativos de cada byte determinan los píxeles en esa fila. Para mostrar un carácter personalizado en la pantalla, hay que utilizar la función write(número).

Nota: Cuando se hace referencia caracter personalizado “0”, si no es en una variable, es necesario declararlo como un byte, de lo contrario el compilador genera un error.

Sintaxis

lcd.createChar (numero, datos)

Parámetros

lcd: variable de tipo LiquidCrystal.

numero: carácter que se va a crear (0-7).

datos: datos de píxeles del carácter.

Esquema Eléctrico:

Pantalla_LCD

Esquema Práctico:

Pantalla_LCD_bb

Código del Programa:

Codigo_LCD

Fotos:

HolaMundo_LCD

Inicio del Programa

HolaMundo_LCD_Ar

Pulsando arriba, se enciende la pantalla

HolaMundo_LCD_Iz

Pulsando Izquierda, realiza un scroll a la izquierda

Código fuente:

Pantalla_LCD.ino

Ficha del Proyecto:

Pantalla_LCD_Ficha_18

Vídeo resumen: