Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Arduino: LCD (I2C) - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 22 de agosto de 2022 por David G.

141 visualizaciones

Descargar la transcripción

Hola, en este ejercicio vamos a ver otra forma que tiene la placa Arduino de conectarse con 00:00:00
otros dispositivos, con otros periféricos. Hemos visto ya la conexión serie, que es 00:00:07
a través del puerto USB, que le permite conectarse con el ordenador, y hoy vamos a ver otro tipo 00:00:11
de conexión serie, que se llama la I2C. Aquí tenemos un ejemplo de dos dispositivos, dos 00:00:17
pantallas LCD que estén conectados a un Arduino Board. Podría haber más pantallas 00:00:27
LCD, pero con dos nos vale para entender cómo funciona esto. Cada una de estas pantallas 00:00:32
LCD tiene cuatro conectores, uno es el GND, la tierra, que es el cable negro, si lo seguimos 00:00:39
ambas tierras están juntas y ambas van al GND del Arduino, otro es la VCC, cable de 00:00:45
color rojo, están ambas conectadas y luego van a los cinco voltios del Arduino. La tierra 00:00:51
es la referencia de voltaje, VCC son los cinco voltios que suministra potencia a ambos dispositivos 00:00:56
y luego tenemos dos cables, dos conexiones que son SDA, cable verde, que están ambas 00:01:02
conectadas, ambas pantallas LCD, y luego van siguiendo al conector SDA, lo indica el puntero, 00:01:08
y el cable amarillo es lo que se llama la conexión SCL, que están las dos conexiones 00:01:16
pantallas juntas y si seguimos el cable amarillo van al conector SCL del Arduino. Yo podría 00:01:21
tener más pantallas, podría tener una más arriba, dos más arriba, en total cuatro, 00:01:27
y todas estarían conectadas de la misma manera, todas a la misma tierra, todas al mismo cinco 00:01:33
voltios, todas al mismo SDA y todas al mismo SCL, con lo cual es muy fácil conectar. 00:01:39
La idea es muy sencilla, ya sabemos que tierra y VCC son señales de voltaje, suministran 00:01:44
una referencia y una energía, y los datos, la información, se va a transmitir a través 00:01:53
de estos dos cables, SDA y SCL. ¿Por qué puede haber varios dispositivos conectados? 00:01:58
Luego lo vemos, cada uno de los dispositivos va a poder programarse de manera distinta 00:02:05
y va a poder responder de manera distinta. Eso se debe gracias a las direcciones, a los 00:02:12
que cada dispositivo va a tener una dirección distinta. Todos están escuchando los mismos 00:02:17
cables, por así decirlo, están conectados a los mismos cables, pero sólo responderán 00:02:22
si la información va dirigida a ellos, porque esa información tiene un destinatario, que 00:02:26
es la dirección. Por ejemplo, este dispositivo de abajo, si yo clico sobre él, yo lo programa 00:02:31
para que esté en la dirección 34, bueno, defino que este dispositivo va a tener la 00:02:36
dirección 34, y el de arriba va a tener la dirección 32. Otro parámetro de configuración 00:02:40
que para los dos es lo mismo, es el tipo, es decir, basado en PCF 8574, es el mismo 00:02:46
para ambos. Clico arriba, PCF tal tal tal, pico abajo, PCF tal tal tal. Ese es el protocolo 00:02:52
de comunicación, el lenguaje que usan para comunicarse con el ordenador. Nosotros vamos 00:02:58
a usar ese, ya está, no hace falta que nos quemamos más la cabeza con eso. Pero sí, 00:03:04
muy importante que tengamos en cuenta que cada uno de los dispositivos tendrá su propia 00:03:09
dirección, este por ejemplo la 32 y de abajo la 34. Esto nos permite programar desde la 00:03:12
32 hasta la 39, es decir, 8 direcciones distintas. Con este simulador nos permite conectar hasta 00:03:17
8 dispositivos diferentes al Arduino, cada uno identificado por su dirección. Bueno, 00:03:24
y estos componentes nuevos, estas pantallas, que no las hemos visto hasta ahora, las podemos 00:03:32
buscar aquí en la librería, en la biblioteca de componentes, si ponemos todos, podemos 00:03:37
escribir LCD, y aparecen dos tipos de LCD, el de 16 x 2, el ordinario, y este de 16 x 00:03:44
2 también, pero que admite el protocolo I2C. Este es el que estamos usando, el que puede 00:03:51
funcionar con este protocolo, ya no sería nada más que clicar y arrastrar. Bueno, pues 00:03:58
ahí lo tendríamos. Ya tenemos todo lo necesario, el Arduino sabemos de dónde cogerlo, las 00:04:03
pantallas LCD sabemos de dónde cogerlas también, y sabemos cómo tirar los cables. Ahora ya 00:04:08
entraríamos en lo que es la programación hardware, ya lo tenemos y vamos a programar. 00:04:13
Bueno, abrimos el código, me encuentro ya aquí algunos bloques que los he dejado ahí 00:04:18
explicándolos. Estos son la base de lo que vamos a necesitar. Antes que nada, fijaros 00:04:25
que aparecen dos bucles, dos partes del programa, la parte de al iniciar y la parte de siempre. 00:04:30
Hasta ahora, nosotros hemos estado utilizando siempre esta parte de siempre, que es la que 00:04:37
se repite una y otra vez. La parte de al iniciar es una parte que no siempre ha estado en Tinkercad, 00:04:42
hace poco que ha aparecido, tened en cuenta que estoy grabando este vídeo en 2022. Esta 00:04:50
parte de al iniciar lo que hace es que se ejecuta una única vez, es un setup, una configuración, 00:05:00
y luego ya entramos de verdad en el siempre, que es el loop este que se repite una y otra 00:05:05
vez, una y otra vez. En el al iniciar, como es una parte de configuración, vamos a usar 00:05:09
este bloque que viene aquí en la biblioteca azul. Todos los bloques que vamos a usar son 00:05:15
de tipo azul porque es información que sale del Arduino hacia las pantallas LCD, con lo 00:05:22
cual todos los bloques van a estar aquí. Este bloque de configurar, lo que le decimos 00:05:27
al Arduino es que lo que nosotros vamos a llamar LCD1 va a estar en la dirección 32 y nos 00:05:32
vamos a comunicar con este protocolo. Y lo mismo, lo que nosotros vamos a llamar LCD2 00:05:39
va a tener esta dirección y vamos a usar este protocolo. De ahora en adelante, una 00:05:44
vez que lo tenemos definido y se configura una única vez, cada vez que digamos LCD1 00:05:50
o LCD2 ya sabemos a cuál nos referimos, en qué dirección está y con qué lenguaje 00:05:55
nos dirigimos a ir. Al iniciar y al siempre no son bloques propios del LCD, es usarlo 00:05:59
en cualquier programa. Aquí los introducimos porque nos interesa, es necesario la configuración. 00:06:07
Aquí es imprescindible. Estos son los bloques de configuración. Bloques que nos permiten 00:06:13
actuar, enviar órdenes a las pantallas LCD. El primero es este que se llama activar la 00:06:21
luz de fondo. En LCD1 activar la luz de fondo. LCD1 es el de 32 y es este de arriba. Yo ahora 00:06:31
si doy a iniciar simulación, fijaos lo que pasa. Se enciende la pantalla de arriba, 00:06:40
habéis visto. Si pusiera que se encendiera el LCD2, pues se encendería el de abajo, 00:06:47
como podéis imaginar. Efectivamente estamos mandando comandos, estamos mandando órdenes 00:06:52
y sabemos distinguir, el programa distingue una pantalla de la otra. En este bloque tenemos 00:06:58
un montón de posibilidades, no vamos a usar más que dos de ellas de momento, que son 00:07:04
activar la luz de fondo y borrar la pantalla. Borrar la pantalla, bueno, antes que nada, 00:07:09
esto de LCD activar luz de fondo no tiene por qué estar en el siempre, porque cuantas 00:07:18
veces, en principio activa uno la luz de fondo, pero activa uno, entonces podríamos LCD 00:07:23
activar la luz de fondo y ya se queda activada. Si yo no voy a tocar eso, pues ahí se puede 00:07:27
quedar, no necesito más que una vez. Entonces, en este bloque, ¿qué voy a hacer? Pues voy 00:07:32
a jugar ahora con el bloque Imprimir. Imprimir LCD1, lo que hace es, me va a mandar un mensaje 00:07:37
de texto, y lo voy a escribir, en este caso en el bloque 1, que es el de arriba, el de 00:07:45
32. Entonces, vamos a ver que ocurre y se lo voy a asegurar. ¿Qué ocurre? Que me lo 00:07:51
está todo el rato escribiendo, hello world, hello world, hello world, porque se repite 00:08:01
todo el rato. Lo está escribiendo arriba, pero se repite todo el rato hasta que termine 00:08:04
la pantalla. ¿A mí qué me interesaría? Esto no es muy práctico, a mí lo que me 00:08:10
interesa es que escribiera y borrara de vez en cuando. Vamos a meter un bloque de borrar 00:08:14
pantalla, pero claro, si yo escribo y borro, no veo nada. Me interesa meter uno de estos 00:08:20
bloques de esperar. Vamos a esperar 500 milisegundos, por ejemplo. Me vamos a poner un segundo. 00:08:28
Entonces, fijaros, imprimo, espero, borro, y si meto un esperar más, ¿eso qué sería? 00:08:38
Un blink, ¿verdad? Vamos a ver si es efectivamente un blink. En el de arriba, a ver, arranca, 00:08:45
borro, ahí está, un segundo borrado, escribe, estoy un segundo esperando. Efectivamente, 00:08:55
estoy haciendo un blinking con el hello world, un blinking que es un encendido apagado, un 00:09:01
palpadeo. Ya vamos viendo los bloques estos, cosas que podemos hacer. Ya hemos visto borrar 00:09:05
la pantalla. Ahora, en realidad, de los bloques que os he traído, solo me falta este de establecer 00:09:17
la posición. Imaginaros ahora, que en vez de escribir hello world, lo que quiera es 00:09:25
escribir un carácter en una determinada posición de la pantalla. Pero claro, si yo pongo el 00:09:35
carácter este en vez del hello world, pues ya sabéis que no va a escribir aquí a la 00:09:40
izquierda, y si no, pues lo vamos a hacer un quick pass, vais a ver que lo escribe ahí 00:09:43
arriba a la izquierda, y hace el palpadeo en vez de con el hello world, con el asterisco 00:09:47
¿Cómo podría hacer que en vez de que estuviera el asterisco aquí, estuviera por ejemplo aquí 00:09:53
en medio? Bueno, pues tenemos que entender que la pantalla tiene dos filas, esta es la 00:09:57
fila 0, ahí arriba, y la fila 1, que es la de abajo, y luego tenemos 16 columnas, 0, 00:10:02
1, 2, 3, 4, 5, y así hasta la 15. Entonces, si yo quisiera que esto estuviera aquí en 00:10:09
medio, por ejemplo, en la fila de abajo, tendría que poner en fila 1, para que se 00:10:16
vea más abajo, y para que esté en el medio, pues más o menos en la 8, sería la 7 o la 00:10:22
8 o algo así. Entonces, ¿qué va a ocurrir? Me va a imprimir aquí arriba, en la segunda 00:10:26
fila, y en el medio, vamos a ver, si está controlando el palpadeo, y lo está haciendo 00:10:32
donde yo quiero. Efectivamente, ahí está, ¿vale? Luego puedo controlar también donde 00:10:38
quiero yo imprimir, en qué parte de la pantalla quiero yo imprimir, ¿vale? Luego ya hemos 00:10:43
visto otro bloque, el de establecer posición. También podríamos hacer, porque claro, estoy 00:10:49
programándose una pantalla, ¿puedo programar las dos a la vez? Pues claro, lo que voy a 00:10:55
hacer es, voy a duplicar todo ello, lo dejo aquí afuera, voy a hacer que en el CD2, en 00:11:00
el LC2, escriba aquí en la esquinita de abajo a la derecha, ¿vale? Pues sería la 00:11:13
fila 1, la columna 15, por ejemplo, y este en vez de que esté en la fila de abajo, que 00:11:16
esté en la de arriba, voy a poner 0, no cambia. Entonces, lo que quiero es imprimir, en vez 00:11:21
de en el LC1 que me imprima en el LC2, vamos a poner un slash, que es un carácter de estos. 00:11:26
Vamos a poner que en el LC2 se active también la luz de fondo, más que nada para que podamos 00:11:33
verlo claro. ¿Veis lo que estoy haciendo? Estoy programando también el LC2 para que 00:11:37
haga un palpadeo también. Entonces, en el LC1 un asterisco en esta posición, en el 00:11:42
LC2 un slash en esta posición. Espero, el esperar me vale el mismo para ambos, porque 00:11:48
estoy esperando para los dos, y en el LC2 tengo que borrar pantalla también. De esta manera 00:11:55
vamos a hacer un palpadeo doble, ¿vale? Iniciamos simulación. ¿Veis? Estamos programando los 00:12:01
dos a la vez. O podríamos hacer también, por ejemplo, que mientras uno está imprimiendo, 00:12:11
el otro esté borrado. Por ejemplo, que el 2 esté borrado. Que imprimamos el LC2 mientras 00:12:18
el LC1 está borrado. ¿Anticipáis lo que va a hacer? Dice que mientras en uno está 00:12:30
el carácter, en el otro estaría en apagado. Es intercalar el palpadeo, vale, va a palpadear 00:12:34
igual, pero intercalado. En vez de ir los dos sincronizados, van a ir opuestos. Vamos 00:12:40
a verlo. ¿Se ve? Va alterado, van en posición cambiadas. Este me imprime aquí porque se 00:12:45
ha colocado aquí y cuando tendría que irme, si yo quiero que me lo escriba donde antes, 00:13:09
lo que tengo que hacer es este bloque de establecer posición, tengo que ponerlo justo antes del 00:13:16
imprimir. Antes tenía la columna 15, fila 1. Porque es que cuando vayas a borrar pantalla 00:13:23
te lo resetea, ¿vale? Te resetea. No te borra solo la pantalla, sino que te borra además 00:13:28
la posición en la que estás, ¿vale? Entonces siempre que queráis establecer una posición, 00:13:32
ponerla, imprimir una posición determinada, ponedle establecer posición justo antes, 00:13:36
¿vale? Entonces vamos a ver que ahora sí ya lo hace bien. Ahí, ¿lo veis? Además 00:13:41
están opuestos. Cuando uno está encendido, el otro está apagado, que era lo que queríamos, 00:13:50
¿vale? Bueno, pues hemos aprendido dos cosas. El cambiar el palpadeo y además que el establecer 00:13:54
posición tiene que ir justo antes del imprimir. Luego, entonces, ahí está, pues hemos aprendido 00:14:00
una serie de bloques y cómo usarlos. ¿Cuál es el ejercicio que tenéis que hacer? Pues 00:14:06
mirad, viene aquí. Os voy a enseñar solo el resultado y vamos a simular y viendo la 00:14:10
simulación veréis lo que tenéis que programar, ¿vale? Entonces, este es el ejercicio que 00:14:18
hay que hacer. Es un tipo de palpadeo, pero el asterisco va recorriendo cuatro posiciones 00:14:24
distintas. Aquí, en la fila de arriba del LCD de arriba, luego a la derecha, luego 00:14:31
bajo a la izquierda, ya en el segundo LCD y luego bajo a la derecha. Esas son las cuatro 00:14:40
posiciones que va barriendo. Entonces es un palpadeo en el que intervienen todas las LCD 00:14:44
y tenéis que ir eligiendo las posiciones en las que queréis que estén las cosas, ¿vale? 00:14:49
Bueno, pues yo creo que es un ejercicio muy sencillo si habéis entendido los bloques 00:14:53
que os he explicado, ¿vale? Bueno, pues ya está, muy fácil entonces. 00:14:57
Idioma/s:
es
Autor/es:
David Gonzalez Arroyo
Subido por:
David G.
Licencia:
Reconocimiento - No comercial - Compartir igual
Visualizaciones:
141
Fecha:
22 de agosto de 2022 - 0:00
Visibilidad:
Público
Centro:
IES MARIE CURIE Loeches
Duración:
15′ 03″
Relación de aspecto:
16:10 El estándar usado por los portátiles de 15,4" y algunos otros, es ancho como el 16:9.
Resolución:
1152x720 píxeles
Tamaño:
141.27 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid