使用ESP32控制LCD1602
在物联网和嵌入式系统中,我们经常需要将设备的状态或数据实时显示在屏幕上。在这个例子中,我们将使用ESP32和LCD1602显示器来实现这个功能。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)市面上字符液晶大多数是基于HD44780液晶芯片的
I2C协议详解(图文并茂+超详细)
首先,我们需要导入必要的库。在这个例子中,我们需要time
库来控制程序的运行时间,machine
库中的SoftI2C
和Pin
类来创建软I2C对象,以及esp32_i2c_1602lcd
库中的I2cLcd
类来创建LCD1602对象。
下面代码调用了其它开发编写的模块,下载地址如下:
lcd_api.py
esp32_i2c_1602lcd.py
import time
from machine import SoftI2C, Pin
from esp32_i2c_1602lcd import I2cLcd
DEFAULT_I2C_ADDR = 0x27 #I1602C 地址为 0x27
#创建软I2C对象
i2c = SoftI2C(sda=Pin(15),scl=Pin(2),freq=100000)
#创建LCD1602对象
lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, 2, 16)
接下来,我们定义一个主函数main()
,在这个函数中,我们将创建一个无限循环,每次循环都会清除LCD屏幕,然后在屏幕上显示当前的时间(以秒为单位)和一个固定的字符串"hello world"。然后,程序会暂停一秒,然后将时间加一。
def main():
i=0
while True:
lcd.clear()
lcd.putstr("time {}\n".format(i))
lcd.putstr("hello world")
time.sleep(1)
i+=1
最后,我们在if __name__ =="__main__":
语句中调用main()
函数,这样当我们直接运行这个脚本时,main()
函数就会被执行。
if __name__ =="__main__":
main()
效果演示
完整代码
import time
from machine import SoftI2C, Pin
from esp32_i2c_1602lcd import I2cLcd
DEFAULT_I2C_ADDR = 0x27 #I1602C 地址为 0x27
#创建软I2C对象
i2c = SoftI2C(sda=Pin(15),scl=Pin(2),freq=100000)
#创建LCD1602对象
lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, 2, 16)
def main():
i=0
while True:
lcd.clear()
lcd.putstr("time {}\n".format(i))
lcd.putstr("hello world")
time.sleep(1)
i+=1
if __name__ =="__main__":
main()