Arduino

tecnoloxia.org

Pantalla LCD

Descrición:

LCD vén do inglés Liquid Crystal Display, é dicir, é unha pantalla de cristal liquido. As LCDs alfa-numéricas permiten mostrar mensaxes de texto sinxelos e hainas dispoñibles en diferentes formatos. A que usaremos aquí (modelo 1602A) ten un formato 16×2 (16 caracteres e dúas liñas).

Imos ver dúas opcións de conexión e programación:

  • Conexión directa a Arduíno
  • Conexión a través de interface I2C
lcd

[tecnoloxia.org CC By-SA]

lcd_controladori2c

[tecnoloxia.org CC By-SA]

pins_tira2

No primeiro caso, para poder realizar as conexións da pantalla debemos soldar unha tira de pins nos conectores e suxeitala cunha protoboard.

No segundo caso o controlador xa vén integrado e preparado para conectar. Úsanse unicamente dous pins de Arduíno, polo que pode ser interesante para proxectos complexos nos que xa teñamos moitos pins ocupados con outras cousas.

Conexión:

Elixe a opción correspondente á pantalla que vaias utilizar:

1. LCD con I2C

lcd_i2c

[tecnoloxia.org CC By-SA from Fritzing]

I²C ou I2C  é un bus de comunicacións en serie que utiliza dúas liñas para transmitir a información: unha para os datos e outra para o sinal de reloxo, polo que a conexión dunha pantalla LCD con interface I2C resulta moi sinxela, pois só temos catro pins.

No caso dunha placa Arduíno UNO as conexións serían:

  • GND e Vcc para a alimentación.
  • SDA ao pin analóxico A4. É o pin de datos.
  • SCL ao pin analóxico A5. É o que envía o sinal de reloxo.i2c_fritzing

A tarxeta Arduíno UNO Rev3 ten outros dous pins que podemos utilizar igualmente para a comunicación I2C, e que están na parte superior, xunto aos pins dixitais. Está indicado pola parte de atrás da tarxeta. Se tes este modelo de Arduíno e che resulta máis cómodo podes substituír as conexións A4 e A5 polos pins SDA e SCL da parte superior.

O módulo I2C soe vir acoplado á parte posterior da pantalla LCD, e incorpora un potenciómetro que permite o axuste do brillo.

2. Conexión directa

Debes soldar unha tira de pins á pantalla LCD, conectala nunha protoboard, e realizar as seguintes conexións:

lcd_fritzing2

[Esquema exemplo de fritzing]

1º) Alimentación: 3º) Pins de control: 5º) LED: (opcional)
  • A pantalla LCD debería acenderse se conectamos a alimentación do Arduíno
  • Vss: GND
  • Vcc: 5V
  • Rs: ao pin 12 do Arduíno
  • RW: a GND
  • E: ao pin 11 do Arduíno
  • É o díodo de retro-iluminación.
  • LED K: a GND
  • LED A: a unha resistencia de 220Ω conectada a 5V no outro extremo.
2º) Potenciómetro: 4º) Cables de datos:
  • Encárgase do axuste do brillo. Fai unha proba despois de conectalo. Deberían verse as matrices de puntos.
  • Vo: Pin central do potenciómetro.
  • Un pin dos extremos do potenciómetro a 5V e o outro a GND.
  • DB4: ao pin 5 do Arduíno
  • DB5: ao pin 4 do Arduíno
  • DB6: ao pin 3 do Arduíno
  • DB7: ao pin 2 do Arduíno

lcd_fritzing1

[Esquema exemplo de fritzing]

Configuración:

Nestas lapelas móstranse os programas de inicio da LCD normal e da LCD con I2C respectivamente. Na sección de prácticas mostraremos diversos exemplos de programas a incluír no loop(){ } e que se programan do mesmo xeito sexa cal sexa a opción escollida.

1. Configuración con I2C

Librerías

O primeiro que debemos facer é incorporar a librería LiquidCrystal-I2C.  Pódese descargar  directamente neste zip. Unha vez gardada no noso ordenador engadímola ao directorio de librerías do IDE de Arduíno (” Sketch → Incluír biblioteca → engadir biblioteca zip”) e despois incluímola no noso proxecto (Sketch → Incluír biblioteca → LiquidCrystal-I2C).

libreria

[tecnoloxia.org CC By-SA]

Hai que incluír ademais outra librería estándar que xa temos no IDE de Arduíno e que se encarga da comunicación I2C: (Sketch → Incluír biblioteca → Wire)  (Wire reference)

Configuración

i2c_scanner

[tecnoloxia.org CC By-SA]

Debemos coñecer o enderezo da pantalla LCD en hexadecimal.

Cada compoñente que conectamos a un bus I2C ten un enderezo único, o que permite que os datos sexan enviados a un dispositivo concreto no caso de ter conectado máis de un. O enderezo por defecto destas pantallas LCD soe ser 0x27, pero depende do modelo. Se tes outro dispositivo podes atopar o seu enderezo utilizando o programa I2C scanner no teu Arduíno. Sairá unha mensaxe como a da imaxe.

Despois debemos introducir os parámetros da clase LiquidCrystal_I2C. No noso caso serán o enderezo, o número de columnas e o número de filas:  LiquidCrystal_I2C lcd(0x27, 16, 2);

Proba este programa cunha mensaxe de inicio.

  • Para enviar un texto e que se mostre na pantalla utilizamos a función: lcd.print(“texto”);
  • Para borrar a pantalla utilizamos a función lcd.clear();

Carga este programa e axusta o contraste co potenciómetro ata que se vexa ben o texto. Para que se mostre o texto permanentemente ata que finalices o axuste comenta a instrución de borrado:

Elimina o comentario antes de introducir os programas seguintes no loop() para que se borre a pantalla de benvida antes de que se executen.

2. Configuración directa

Librería

Antes de nada debemos incorporar a librería “LiquidCrystal.h” que xa está incluída no propio IDE de Arduíno: Sketch → Incluír biblioteca → LiquidCrystal

Despois debemos crear unha instancia chamada lcd, da clase LiquidCrystal, e escribimos os parámetros cos pins que utilizamos para conectar a pantalla a Arduíno. LiquidCrystal lcd( RS, EN, d4, d5, d6, d7);

Configuración

No setup() debemos indicar o número de columnas e o número de filas da nosa LCD: lcd.begin(columnas, filas);

Imos escribir unha primeira mensaxe que aparece cando iniciamos o programa e que só se vai executar unha vez, pois está no setup().

  • Para enviar un texto e que se mostre na pantalla utilizamos a función: lcd.print(“texto”);
  • Para borrar a pantalla utilizamos a función lcd.clear();

Carga este programa e axusta o contraste co potenciómetro ata que se vexa ben o texto. Para que se mostre o texto permanentemente ata que finalices o axuste comenta a instrución de borrado:

Elimina o comentario antes de introducir os programas seguintes no loop() para que se borre a pantalla de benvida antes de que se executen.

Prácticas

Aquí móstranse algúns exemplos de programas que podes incluír no loop(){ } que deixamos baleiro. Lémbrate de poñer primeiro o programa correspondente á configuración da túa pantalla LCD.

1. Texto

Imos escribir un texto na pantalla en diferentes posicións. Para indicar a posición do cursor debemos utilizar a función lcd.setCursor(columna, liña); A nosa pantalla ten 16 columnas (de 0 a 15) e 2 liñas (0 a de arriba e 1 a de abaixo)

2. Scroll

Agora imos facer scroll cun texto derminado. Para mover un texto pola pantalla usaremos as funcións lcd.scrollDisplayLeft(); para movernos cara á esquerda e lcd.scrollDisplayRight(); cara á dereita.

Debemos indicar mediante un bucle for o número de posicións que queremos movernos. A velocidade do desprazamento pódese axustar cambiando o valor do delay do bucle for.

3. Scroll automático

Tamén podemos configurar a pantalla para que faga scroll automático cando se introduce un texto. Para iso temos que utilizar a función lcd.autoscroll(); para activalo e lcd.noAutoscroll(); para desactivalo

4. Consola

Agora imos mostrar na pantalla LCD un texto recollido desde a consola serie. Só falta que ti lle poñas scroll a gusto.

Para entender como funciona a consola serie podes mirar previamente esta páxina.

consola_findelinha

[tecnoloxia.org CC By-SA]

Se ves que se imprimen caracteres estraños despois do texto introducido na consola, pode ser que esteas engadindo o salto de liña.

Para solucionalo selecciona na parte inferior da consola “Falta final de liña”.

5. Debuxos

Podemos definir os nosos propios caracteres e amosalos na pantalla, e incluso crear animacións.

lcdchar

[tecnoloxia.org CC By-SA from lcdchar]

O primeiro que debemos facer é definir os nosos caracteres personalizados creando un array cos valores dos píxeles de cada carácter, formado por 40 puntos distribuídos en 8 filas e 5 columnas. Nesta web tes unha aplicación para debuxar e extraer o código dos teus debuxos.

Despois rexistramos o novo carácter coa instrución lcd.createChar(número asignado, nome do array);

Para mostralo na pantalla LCD temos dúas opcións:

  • lcd.write(número do carácter);
  • lcd.print((char)número do carácter);

Hai que ter en conta que só podemos usar 8 caracteres especiais simultaneamente (de 0 a 7). O número asignado indica a posición da memoria da pantalla onde gardamos o carácter personalizado. Esta pantalla ten 8 posicións de memoria, polo que se queremos gardar un noveno deseño teremos que substituír algún dos gardados anteriormente no momento de utilizalo.

Propostas:

Estas son algunhas ideas para traballar, pero o ideal é que traballes o necesario para incorporar unha pantalla LCD ao teu proxecto.

  1. Datos dos sensores: Mostra na pantalla LCD os datos procedentes dun sensor. Por exemplo, dun sensor de temperatura mostra os graos centígrados e kelvin.
  2. Datos de saída: Mostra na pantalla os datos de saída dalgún actuador do teu proxecto: Led aceso ou apagado, ángulo dun servo, estado dun motor (sentido de xiro e parado).
  3. Ascensor: Nun proxecto dun ascensor de 3 pisos, mostra na pantalla o piso no que está ou se está subindo ou baixando.

 

Deseño 3D

En Thingiverse tedes o STL deste soporte para LCD deseñado polo alumnado de Tecnoloxía Industrial de 2ºBach (curso 16-17)

Se queres facer o teu propio soporte poden axudarche estas medidas:

Extra:

Cando remates o teu traballo podes botar unha partida a Arduino LCD Game.

Facendo clic en “Code editor” podes copiar o código para cargalo no teu Arduíno. Se usas unha LCD con interface I2C lémbrate de adaptar a configuración do programa. Engade un pulsador ao pin 2. (Instrucións aquí)

arduinolcdgame

[Captura de Arduino LCD Game from circuits.io]




     

Deixa unha resposta

Required fields are marked *.