====== Manejo de Display (TM1637) ======
El dispositivo TM1637 es un controlador que permite visualizar la información que deseemos en un formato de **cuatro digitos** que pueden ser alfanúmericos. La apariencia de este display es la siguiente:
{{:tm1637.jpg?nolink&300x300|tm1637.jpg}}
Para trabajar con este display en el laboratorio remoto, tenemos una serie de pines conectados desde la Raspberry Pi hasta el display. **En el laboratorio remoto smartlabsuniminuto trabajamos con una librería para el TM1637 que puede ser consultada en el siguiente enlace**: [[https://pypi.org/project/raspberrypi-tm1637/|https://pypi.org/project/raspberrypi-tm1637/]]
La lista de pines es la siguiente:
^Pin^Descripción|
|**GPIO5** |Pin CLK (Reloj) para display TM1637|
|**GPIO4** |Pin DIO (Datos) para display TM1637|
|**VCC** |Conexión 5V para display|
|**GND** |Conexión a tierra para display|
Así la conexión de la Raspberry Pi a este display es la siguiente:
{{:tm1637.png?nolink&600x463}}
----
===== 2. Programación en bloques para display TM1637 =====
Para la programación en bloques usaremos los siguientes bloques disponibles en la interfaz del laboratorio remoto:
^Bloque^Descripción|
|{{:tm1637inicio.png?nolink&277x60}}|Permite llamar la librería de comunicación del display TM1637 e inicializarlo con los pines CLK y DIO de acuerdo a la anterior tabla.|
|{{:tm1637escribirt.png?nolink&230x74}}|Permite escribir texto en el display (Máximo cuatro carácteres).|
|{{:tm1637scroll.png?nolink&320x110}}|Permite escribir un texto con desplazamiento (scroll). El bloque necesita el texto a escribir y un tiempo de deslizamiento, normalmente 250ms (0.25 s)|
|{{:tm1637hora.png?nolink&200x106}}|Permite escribir la hora y minutos indicados en el display TM1637.|
Con estos bloques podemos enviar información a nuestro display TM1637. A continuación se muestra el código para enviar información con desplazamiento y el video de explicación respectivo para construir nuestro algoritmo gráfico.
{{:tm1637scrollalgo.png?nolink&400x193}}
{{youtube>4DdTomqJdTM?500x300}}
----
===== 3. Programación en código Python para display TM1637 =====
Para trabajar con código directamente en Python para interactuar con el display TM1637 usaremos las siguientes instrucciones en lenguaje de programación Python
^Instrucción (Sentencia)^Descripción|
|
import tm1637
|Permite importar el paquete **tm1637** en Python para enviar la información al display TM1637|
|
import time
|Incorpora la librería o paquete **time** para retrasos en el código en segundos.|
|
tm=tm1637.TM1637(clk=5,dio=4)
|Permite inciar al display TM1637 en los pines seleccionados. CLK en GPIO5 y DIO en GPIO4. Estos pines están conectados directamente a la Raspberry Pi en el laboratorio remoto.|
|
tm.scroll('hola mundo',delay=250)
|Permite **escribir **con desplazamiento el texto enviado al display. Este desplazamiento se efectuará en pasos de 250 milisegundos (250).|
|
tm.show('hola')
|**Muestra **el texto indicado en el display TM1637 (Sin desplazamiento). En este caso el texto está limitado a 4 carácteres.|
| | |
|
time.sleep(2)
|Crea un retraso en tiempo, en este caso de 2 segundos.|
Para trabajar en lenguaje Python, usaremos el siguiente código base que permite enviar información con desplazamiento el display.
#Inserta tu codigo de Raspberry Pi aqui (Nota: comentarios sin tildes!)
import tm1637
import time
tm = tm1637.TM1637(clk=5, dio=4) #Pines para tm1647 (no cambiar)
while True:
tm.scroll('Hola Mundo',delay=250) #Escribir en display con una periodo de 250ms
time.sleep(1) #retraso de 1 sec
El código funciona del siguiente modo:
* Importamos la librería tm1637 para trabajar con el display.
* Importamos la librería time para crear retrasos.
* Iniciamos el display en los pines seleccionados para CLK y DIO (GPIO5, GPIO4) respectivamente.
* Colocamos un bucle **while True **que repetirá todo lo que se ponga dentro de él de manera continua.
* Usamos la sentencia tm.scroll('Hola Mundo',delay=250)para escribir un text con desplazamiento en el LCD.
* Esperamos 2 segundos para volver a escribir texto en el display.
El video de explicación de este código se muestra a continuación:
{{youtube>X6EZ9dobagw?500x300}}
Un código complementario para mostrar la hora en tiempo real en nuestro display se muestra en el siguiente código base:
import tm1637
import time
from time import sleep, localtime
from tm1637 import TM1637
DIO = 4 #pines para display tm1637
CLK = 5
class Clock:
def __init__(self, tm_instance):
self.tm = tm_instance
self.show_colon = False
def run(self):
while True: #bucle para mostrar hora continuamente
t = localtime() #Obtener hora de la Raspberry Pi
self.show_colon = not self.show_colon
tm.numbers(t.tm_hour, t.tm_min, self.show_colon)
sleep(1)
if __name__ == '__main__': #funcion principal para activar display y obtener hora
tm = TM1637(CLK, DIO) #Configuracion de TM1637
tm.brightness(1) #ajuste de brillo de display
clock = Clock(tm)
clock.run()