68 lines
2.3 KiB
Python
68 lines
2.3 KiB
Python
from microcontroller import delay_us
|
|
import board
|
|
import busio
|
|
|
|
DISPLAY_TEXT_ADDR = 0x3e
|
|
DISPLAY_RGB_ADDR = 0x62
|
|
class RGBLCD:
|
|
def __init__(self, i2cbus: busio.I2C, lcdaddr=DISPLAY_TEXT_ADDR, rgbaddr=DISPLAY_RGB_ADDR):
|
|
self._lcdaddr = lcdaddr
|
|
self._rgbaddr = rgbaddr
|
|
self.bus = i2cbus
|
|
|
|
# set backlight to (R,G,B) (values from 0..255 for each)
|
|
def setRGB(self, r,g,b):
|
|
self.bus.writeto(self._rgbaddr,bytes((0,0)))
|
|
self.bus.writeto(self._rgbaddr,bytes((1,0)))
|
|
self.bus.writeto(self._rgbaddr,bytes((0x08,0xaa)))
|
|
self.bus.writeto(self._rgbaddr,bytes((4,r)))
|
|
self.bus.writeto(self._rgbaddr,bytes((3,g)))
|
|
self.bus.writeto(self._rgbaddr,bytes((2,b)))
|
|
|
|
# send command to display (no need for external use)
|
|
def textCommand(self, cmd):
|
|
self.bus.writeto(self._lcdaddr,bytes((0x80,cmd)))
|
|
|
|
# set display text \n for second line(or auto wrap)
|
|
def setText(self, text):
|
|
self.textCommand(0x01) # clear display
|
|
delay_us(50000)
|
|
self.textCommand(0x08 | 0x04) # display on, no cursor
|
|
self.textCommand(0x28) # 2 lines
|
|
delay_us(50000)
|
|
count = 0
|
|
row = 0
|
|
for c in text:
|
|
if c == '\n' or count == 16:
|
|
count = 0
|
|
row += 1
|
|
if row == 2:
|
|
break
|
|
self.textCommand(0xc0)
|
|
if c == '\n':
|
|
continue
|
|
count += 1
|
|
self.bus.writeto(self._lcdaddr,bytes((0x40,ord(c))))
|
|
|
|
#Update the display without erasing the display
|
|
def setText_norefresh(self, text):
|
|
self.textCommand(0x02) # return home
|
|
delay_us(50000)
|
|
self.textCommand(0x08 | 0x04) # display on, no cursor
|
|
self.textCommand(0x28) # 2 lines
|
|
delay_us(50000)
|
|
count = 0
|
|
row = 0
|
|
while len(text) < 32: #clears the rest of the screen
|
|
text += ' '
|
|
for c in text:
|
|
if c == '\n' or count == 16:
|
|
count = 0
|
|
row += 1
|
|
if row == 2:
|
|
break
|
|
self.textCommand(0xc0)
|
|
if c == '\n':
|
|
continue
|
|
count += 1
|
|
self.bus.writeto(self._lcdaddr,bytes((0x40,ord(c))))
|