Está en la página 1de 10

LCD con

Johnny5

En este tutorial, se explicará cómo configurar una pantalla LCD


en un Arduino con Jhonny5. Son excelentes para cualquier
proyecto que genere datos y pueden hacer que su proyecto sea
mucho más interesante e interactivo.
La pantalla que se utilizará pantalla LCD de 16×2. La parte 16×2
significa que la pantalla LCD tiene 2 líneas y puede mostrar 16
caracteres por línea. Por tanto, una pantalla LCD de 16×2 puede
mostrar hasta 32 caracteres a la vez.
CONEXIÓN DE LA PANTALLA LCD AL ARDUINO
Aquí hay un diagrama de los pines de la pantalla LCD. Las
conexiones de cada pin al Arduino serán las mismas, pero es
posible que sus pines estén dispuestos de manera diferente en
la pantalla LCD. Asegúrese de consultar la hoja de datos o
buscar etiquetas en su pantalla LCD particular:
TERMINALES:

❖ Pin 1 – VSS: GND o tierra


❖ Pin 2 – VDD: Alimentación Vcc o +5V.
❖ Pin 3 – V0 o VE: Control del contraste del display,
conectamos este pin al terminal variable de un
potenciómetro conectado a Vcc y Masa en sus
terminales extremos.
❖ Pin 4 – RS: Selección de Registro.
❖ Pin 5 – R/W: 0 lógico: Escritura del LCD. 1 lógico:
Lectura del LCD.
❖ Pin 6 – Enable: 1 lógico señala el inicio de escritura o
lectura del LCD, un 0 lógico, desactiva todas las
funciones
❖ Pin 7-10 – D0/D3: Pines correspondientes al bus de
datos. D0 corresponde al bit menos significativo. Estos
pines no se utilizan si realizamos operaciones sobre el
LCD de 4 bits.
❖ Pin 11-14 – D4/D7: Pines correspondientes al bus de
datos. D7 corresponde al bit más significativo.
❖ Pin 15 – A: Ánodo de la retroiluminación: R + 5V.
❖ Pin 16 – K: Cátodo de la retroiluminación: GND.

Además, es posible que necesite soldar un conector de 16


pines a tu pantalla LCD antes de conectarla a una placa de
pruebas.

PROGRAMANDO EN JHONNY-FIVE
En Jhonny-five para manejar un lcd se tiene la clase LCD que
construye un objeto que representa una pantalla LCD. Los
controladores generalmente reciben el nombre del chip
utilizado o del número de modelo del componente. En este
tutorial se usa el modelo 1602A.

PARAMETROS
• Opciones Generales

PROPIEDAD TIPO VALOR/DESCRIPCION POR REQUERIDO


DEFECTO

Rows number El número de filas 2 No


en el dispositivo.

Columns number El número de 16 No


columnas en el
dispositivo.

• Opciones I2C

PROPIEDAD TIPO VALOR/DESCRIPCION REQUERIDO

controller String "PCF8574", "PCF8574A", Si


"JHD1313M1" (Grove).
Nombre del controlador a
usar.
• Opciones paralelas (controlador predeterminado)

PROPIEDAD TIPO VALOR/DESCRIPCION REQUERIDO

Pines Object { rs, en, d4, d5, d6, d7 }. Si (cualquiera)


Configura los valores de rs,
en, d4, d5, d6 y d7 pines.

Pines Array [ rs, en, d4, d5, d6, d7 ]. Si (cualquiera)


Configura los valores de rs,
en, d4, d5, d6 y d7 pines.

Haciendo un ejemplo práctico:


MATERIALES:
- LCD 16x2
- Potenciómetro de 5k u otro valor.
- protoboard
- jumpers
- Arduino UNO

PASO 1
Siga el diagrama a continuación para conectar la pantalla
LCD a su Arduino:
donde:
GND: conexión a tierra.
VCC: alimentación de energía
V0: se conecta al potenciómetro.
RS: Pin 6 de Arduino.
RW: conexión a tierra.
E: Pin 7 de Arduino.
D4: Pin 2 de Arduino.
D5: Pin 3 de Arduino.
D6: Pin 4 de Arduino.
D7: Pin 5 de Arduino.

PASO 2
Cree un nuevo archivo lcd.js y cargue este código:

const { Board, LCD } = require("johnny-five")


const board = new Board({port:"COM3"});

board.on("ready", function () {
//Primer ejemplo
const lcd = new LCD({ pins: [6,7,2,3,4,5] })
lcd.cursor(0, 0).print("Hello World!");
lcd.cursor(1, 0).print("LCD example");

// Espera 3 segundos y luego borra la pantalla


this.wait(3000, () => {
lcd.clear();
lcd.home();
lcd.print("Home");
lcd.cursor(1, 0).print("Screen cleared!");

});

})

El código paso a paso:

A continuación, se proporciona una explicación de cada línea de


código:
const { Board, LCD } = require("johnny-five")
En esta línea, se importan las clases Board y LCD de la biblioteca
"johnny-five" utilizando la destructuración del objeto importado.
Esto permite acceder a estas clases en el ámbito actual del
programa.
const board = new Board({port:"COM3"});

Se crea una nueva instancia de la clase Board con la


configuración del puerto COM3. Esta instancia representa la
placa de desarrollo que se utilizará para controlar otros
dispositivos. Es decir dependerá del dispositivo en el que se va a
utilizar.

board.on("ready", function () {

Se define un controlador de eventos que se ejecutará cuando la


placa de desarrollo esté lista y disponible para su uso. El código
dentro de esta función se ejecutará una vez que la placa esté
lista.

const lcd = new LCD({ pins: [6,7,2,3,4,5] })

Se crea una nueva instancia de la clase LCD con la


configuración de pines especificada. Esto crea una interfaz para
controlar una pantalla LCD utilizando los pines GPIO 6, 7, 2, 3, 4
y 5 de la placa de desarrollo. Estos valores son los
correspondientes a los pines en los que se conectó el LCD con el
Arduino.

lcd.cursor(0, 0).print("Hello World!");

Se llama al método cursor del objeto LCD para posicionar el


cursor en la primera línea (línea 0) y la primera columna
(columna 0) de la pantalla LCD. Luego, se llama al método print
para mostrar el texto "Hello World!" en esa ubicación de la
pantalla.

lcd.cursor(1, 0).print("LCD example");

Similar al paso anterior, se mueve el cursor a la segunda línea


(línea 1) y la primera columna (columna 0) de la pantalla LCD, y
se muestra el texto "LCD example".

this.wait(3000, () => {

Se utiliza el método wait del objeto actual (la placa de


desarrollo, representada por this) para realizar una pausa de 3
segundos antes de ejecutar el código en la función de
devolución de llamada (callback) proporcionada.

lcd.clear();

Se llama al método clear del objeto LCD para borrar el


contenido de la pantalla LCD.
lcd.home();

Se llama al método home del objeto LCD para mover el cursor a


la posición de inicio en la pantalla LCD.
lcd.print("Home");

Se muestra el texto "Home" en la pantalla LCD.

lcd.cursor(1, 0).print("Screen cleared!");

Se mueve el cursor a la segunda línea (línea 1) y la primera


columna (columna 0) de la pantalla LCD, y se muestra el texto
"Screen cleared!".

PASO 3
vamos a nuestra terminal y ejecutamos el archivo lcd.js.
En nuestro caso se accede a la carpeta del proyecto (ej. cd
/Users/arduino/j5) y luego ejecutar: node index.js
En la misma pantalla de la terminal mostraria los datos de
conexion seguido del mensaje “Esperando a que inicialice el
dispositivo…” luego el mensaje «Placa lista.» y por ultimo el
resultado de nuestro código.

LDC FUNCIONANDO
Ahora que conocemos el funcionamiento básico un ejemplo de
mostrar por el LCD una serie de números primos:

const { Board, LCD } = require("johnny-five");


const board = new Board({port:"COM3"});

board.on("ready", function () {
const lcd = new LCD({ pins: [6, 7, 2, 3, 4, 5] });

function numprimo(primo) {
let cpr = 0;
for (let i = 1; i <= primo; i++) {
if (primo % i === 0) cpr++;
}
return cpr === 2;
}

lcd.useChar("x");

const n = 10;
lcd.clear();
lcd.home();
lcd.cursor();
lcd.print(`N=: ${n}`);

let cnp = 1;
let np = 2;

function displayNextPrime() {
if (cnp <= n) {
if (numprimo(np)) {
lcd.setCursor(4, 1);
lcd.print(`${np}`);
setTimeout(() => {
cnp++;
np++;
displayNextPrime();
}, 750);
} else {
np++;
displayNextPrime();
}
}
}

setTimeout(displayNextPrime, 1000); // Iniciar la secuencia


después de 1 segundo
});
La clase LCD ofrece estos métodos interesantes:

▪ print(message, opts) imprime la cadena 'mensaje' en


la pantalla LCD en la posición actual del cursor.
// Sin caracteres especiales
lcd.print("Bleep bloop");

// Conn caracteres especiales.


// Esto imprimirá un carácter de corazón en un
espacio de 1 carácter..
lcd.useChar("heart");
lcd.print(":heart:");

▪ useChar(charCode|name) Crea el carácter en la


memoria LCD y agrega el carácter al mapa de
caracteres LCD actual. La memoria LCD está limitada a
8 caracteres especiales a la vez.

lcd.useChar("heart");
lcd.print("Hello :heart:");

▪ clear() Borra todo el texto en la pantalla LCD.

lcd.print("Bleep bloop");
lcd.clear();

▪ cursor(row, column) Establece la posición del cursor.

// La posición inicial de la pantalla LCD


lcd.cursor(0, 0).print("Bleep");

// La segunda línea, primer carácter de la pantalla


LCD
lcd.cursor(0, 1).print("Bloop");

▪ home()Establece la posición del cursor en la fila 0,


columna 0.
// La segunda línea, primer carácter de la pantalla
LCD
lcd.cursor(1, 0).print("Bloop");

// La primera línea, primer carácter de la pantalla


LCD
lcd.home().print("Bleep");

▪ on() Enciende la pantalla.

▪ off() Apaga la pantalla.


▪ blink() Esto hace que el cursor se muestre y parpadee.

lcd.blink().print("Bleep Bloop");

▪ noBlink() Esto hace que el cursor deje de parpadear.


lcd.noBlink().print("Bleep Bloop");

▪ autoscroll() Activa el desplazamiento automático de la


pantalla LCD. Esto hace que cada carácter que se
muestra en la pantalla empuje los caracteres
anteriores un espacio.
lcd.autoscroll().print("Bloop").print("Bleep");

▪ noAutoscroll() Desactiva el desplazamiento


automático de la pantalla LCD.
lcd.noAutoscroll().print("Bloop").print("Bleep");

BIBLIOGRAFIA:
• Campbell, S. (2015, marzo 29). Arduino LCD set up
and programming guide. Circuit Basics.
https://www.circuitbasics.com/how-to-set-up-an-
lcd-display-on-an-arduino/
• Copes, F. (s/f). Johnny Five, how to work with an LCD
Screen. Flaviocopes.com. Recuperado el 15 de
septiembre de 2023, de
https://flaviocopes.com/johnny-five-lcd/
• JavaScript Robotics: LCD API (Johnny-Five). (s/f).
Johnny-Five. Recuperado el 15 de septiembre de
2023, de https://johnny-five.io/api/lcd/

También podría gustarte