# #############################################################################
# **    Proyecto       : 211 lcd1602
# **    Plataforma     : ESP32 / WROOM
# **    Herramienta    : https://www.wokwi.com        
# **                   : Thonny aplicacion de escritorio descargar en www.thonny.org
# **    Compilador     : wokwi Simulador online
# **    Version        : 1.0
# **    Fecha/Hora     : 25-07-2024, 11:05 PM, 
# **    
# **            E N   P R O C E S O - T R A B A J A N D O
# ** 
# **   Versión        : 1
# **   Revisión       : A
# **   Release        : 0
# **   Bugs & Fixes   :
# **   Date           : 25/07/2024
# **   
# **   By             : Jorge Anzaldo    
# **   contact        : [email protected]
# **   twitter x      : @janzaldob
#  #############################################################################

# ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# :                       Librerias / Bibliotecas / Modulos                      |                            :
# ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

import machine
from machine import Pin, SoftI2C
from lcd_api import LcdApi
from i2c_lcd import I2cLcd
from time import sleep         

# +-------------------------------------------------------------------------------
# |            V A R I A B L E S / O B J E T O S - G L O B A L E S                                     |
# +-------------------------------------------------------------------------------

I2C_ADDR = 0x27
totalRows = 2
totalColumns = 16

i2c = SoftI2C(scl=Pin(14), sda=Pin(12), freq=10000)  
lcd = I2cLcd(i2c, I2C_ADDR, totalRows, totalColumns)
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# |                    Definición y Desarrollo de Funciones / Clases             |
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


# ===============================================================================
# ||                                                                            ||
# ||        P R O G R A M A / F U N C I O N    P R I N C I P A L                ||
# ||                                                                            ||
# =============================================================================== 


while True:
    lcd.putstr("HOLA ESIME ")
    sleep(2)
    lcd.clear()
    lcd.putstr("INICIEMOS CON UN CONTADOR ")
    sleep(2)
    lcd.clear()
    for i in range(11):
        lcd.putstr(str(i))
        sleep(1)
        lcd.clear()

'''

# ********************************************************************************
#                                                                            
#                                                                            
#                                                                            
#                R E F E R E N C I A S  / C O M E N T A R I O S  

Obtención de la dirección I2C del LCD
Cuando conecta su pantalla I2C con ESP32/ESP8266, debe verificar su dirección. 
Porque cada dispositivo I2C tiene una dirección asociada. Para muchos dispositivos 
de LCD I2C, la dirección predeterminada es 0x27, donde 0x muestra el formato 
hexadecimal de los números. Pero la dirección puede ser diferente en algunos casos. 
Esta dirección depende de la posición de los pads A0, A1 y A2 en el controlador I2C 
de este dispositivo.

Ahora copie este código y cárguelo en su placa con el LCD I2C ya conectado a ella.

Este código buscará cualquier dispositivo I2C conectado con ESP32 y especificará 
la cantidad de dispositivos con la dirección en la consola de shell. Si usa ESP8266, 
reemplace los pines SDA y SCL según corresponda.

import machine

sdaPIN=machine.Pin(21)  #for ESP32
sclPIN=machine.Pin(22)

i2c=machine.I2C(sda=sdaPIN, scl=sclPIN, freq=10000)   

devices = i2c.scan()
if len(devices) == 0:
 print("No i2c device !")
else:
 print('i2c devices found:',len(devices))
for device in devices:
 print("At address: ",hex(device))





# 
#                       
#                                                                      
# *********************************************************************************
'''