Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Arduino: LCD (I2C) - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
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:
- 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