HD44780 for NJU and SSD
This commit is contained in:
parent
f2c059dcc7
commit
d7a2904a7f
@ -85,7 +85,7 @@ class Chip(metaclass=abc.ABCMeta):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
def draw_pixel(self, pos_x, pos_y):
|
def draw_pixel(self, pos_x, pos_y, color=None):
|
||||||
"""draw a pixel at x,y"""
|
"""draw a pixel at x,y"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
28
gfxlcd/demos/nju_hd44780.py
Normal file
28
gfxlcd/demos/nju_hd44780.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import sys
|
||||||
|
sys.path.append("../../")
|
||||||
|
import RPi.GPIO # NOQA pylint: disable=I0011,F0401
|
||||||
|
from charlcd.buffered import CharLCD # NOQA
|
||||||
|
from gfxlcd.driver.nju6450.gpio import GPIO
|
||||||
|
from gfxlcd.driver.nju6450.nju6450 import NJU6450
|
||||||
|
from gfxlcd.driver.hd44780 import HD44780
|
||||||
|
RPi.GPIO.setmode(RPi.GPIO.BCM)
|
||||||
|
|
||||||
|
|
||||||
|
def test1():
|
||||||
|
"""demo """
|
||||||
|
lcd = NJU6450(122, 32, GPIO())
|
||||||
|
|
||||||
|
drv = HD44780(lcd, True)
|
||||||
|
print(drv.width, drv.height)
|
||||||
|
lcd = CharLCD(drv.width, drv.height, drv, 0, 0)
|
||||||
|
lcd.init()
|
||||||
|
lcd.write('First')
|
||||||
|
|
||||||
|
lcd.write('HD44780', 6, 3)
|
||||||
|
lcd.flush()
|
||||||
|
lcd.write('/* ', 12, 0)
|
||||||
|
lcd.write('|*|', 12, 1)
|
||||||
|
lcd.write(' */', 12, 2)
|
||||||
|
lcd.flush()
|
||||||
|
|
||||||
|
test1()
|
28
gfxlcd/demos/ssd_hd44780.py
Normal file
28
gfxlcd/demos/ssd_hd44780.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import sys
|
||||||
|
sys.path.append("../../")
|
||||||
|
import RPi.GPIO # NOQA pylint: disable=I0011,F0401
|
||||||
|
from charlcd.buffered import CharLCD # NOQA
|
||||||
|
from gfxlcd.driver.ssd1306.spi import SPI
|
||||||
|
from gfxlcd.driver.ssd1306.ssd1306 import SSD1306
|
||||||
|
from gfxlcd.driver.hd44780 import HD44780
|
||||||
|
RPi.GPIO.setmode(RPi.GPIO.BCM)
|
||||||
|
|
||||||
|
|
||||||
|
def test1():
|
||||||
|
"""demo """
|
||||||
|
lcd = SSD1306(128, 64, SPI())
|
||||||
|
|
||||||
|
drv = HD44780(lcd, True)
|
||||||
|
print(drv.width, drv.height)
|
||||||
|
lcd = CharLCD(drv.width, drv.height, drv, 0, 0)
|
||||||
|
lcd.init()
|
||||||
|
lcd.write('First')
|
||||||
|
|
||||||
|
lcd.write('HD44780', 6, 3)
|
||||||
|
lcd.flush()
|
||||||
|
lcd.write('/* ', 12, 0)
|
||||||
|
lcd.write('|*|', 12, 1)
|
||||||
|
lcd.write(' */', 12, 2)
|
||||||
|
lcd.flush()
|
||||||
|
|
||||||
|
test1()
|
@ -2,15 +2,16 @@
|
|||||||
allows graphical LCD to work as character LCD
|
allows graphical LCD to work as character LCD
|
||||||
"""
|
"""
|
||||||
from charlcd.drivers.base import BaseDriver
|
from charlcd.drivers.base import BaseDriver
|
||||||
from charlcd.abstract import lcd as char_lcd
|
from charlcd.abstract.flush_event_interface import FlushEvent
|
||||||
|
|
||||||
|
|
||||||
class HD44780(BaseDriver):
|
class HD44780(BaseDriver, FlushEvent):
|
||||||
def __init__(self, gfxlcd):
|
def __init__(self, gfxlcd, lcd_flush=False):
|
||||||
"""Class init"""
|
"""Class init"""
|
||||||
self.gfxlcd = gfxlcd
|
self.gfxlcd = gfxlcd
|
||||||
self.mode = 0
|
self.mode = 0
|
||||||
self.initialized = False
|
self.initialized = False
|
||||||
|
self.lcd_flush = lcd_flush
|
||||||
self.font = self.gfxlcd.options['font']
|
self.font = self.gfxlcd.options['font']
|
||||||
self.width = self.gfxlcd.width // self.font.size[0]
|
self.width = self.gfxlcd.width // self.font.size[0]
|
||||||
self.height = self.gfxlcd.height // self.font.size[1]
|
self.height = self.gfxlcd.height // self.font.size[1]
|
||||||
@ -73,3 +74,11 @@ class HD44780(BaseDriver):
|
|||||||
|
|
||||||
def get_line_address(self, idx):
|
def get_line_address(self, idx):
|
||||||
return self.address[idx]
|
return self.address[idx]
|
||||||
|
|
||||||
|
def pre_flush(self, buffer):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def post_flush(self, buffer):
|
||||||
|
"""called after flush()"""
|
||||||
|
if self.lcd_flush:
|
||||||
|
self.gfxlcd.flush(True)
|
||||||
|
@ -6,7 +6,7 @@ from gfxlcd.abstract.chip import Chip
|
|||||||
|
|
||||||
class NJU6450(Page, Chip):
|
class NJU6450(Page, Chip):
|
||||||
"""Class for an LCD with NJU6450 chip"""
|
"""Class for an LCD with NJU6450 chip"""
|
||||||
def __init__(self, width, height, driver, auto_flush=True):
|
def __init__(self, width, height, driver, auto_flush=False):
|
||||||
Chip.__init__(self, width, height, driver, auto_flush)
|
Chip.__init__(self, width, height, driver, auto_flush)
|
||||||
Page.__init__(self, driver)
|
Page.__init__(self, driver)
|
||||||
self.rotation = 0
|
self.rotation = 0
|
||||||
@ -62,7 +62,7 @@ class NJU6450(Page, Chip):
|
|||||||
else:
|
else:
|
||||||
self.driver.data(self.get_page_value(i, j), 1)
|
self.driver.data(self.get_page_value(i, j), 1)
|
||||||
|
|
||||||
def draw_pixel(self, pos_x, pos_y):
|
def draw_pixel(self, pos_x, pos_y, color=None):
|
||||||
"""draw a pixel at x,y"""
|
"""draw a pixel at x,y"""
|
||||||
if self.rotation == 90:
|
if self.rotation == 90:
|
||||||
pos_x, pos_y = self.height - pos_y - 1, pos_x
|
pos_x, pos_y = self.height - pos_y - 1, pos_x
|
||||||
@ -70,7 +70,7 @@ class NJU6450(Page, Chip):
|
|||||||
pos_x, pos_y = self.width - pos_x - 1, self.height - pos_y - 1
|
pos_x, pos_y = self.width - pos_x - 1, self.height - pos_y - 1
|
||||||
if self.rotation == 270:
|
if self.rotation == 270:
|
||||||
pos_x, pos_y = pos_y, self.width - pos_x - 1
|
pos_x, pos_y = pos_y, self.width - pos_x - 1
|
||||||
Page.draw_pixel(self, pos_x, pos_y)
|
Page.draw_pixel(self, pos_x, pos_y, color)
|
||||||
|
|
||||||
def fill_rect(self, pos_x1, pos_y1, pos_x2, pos_y2):
|
def fill_rect(self, pos_x1, pos_y1, pos_x2, pos_y2):
|
||||||
"""draw a filled rectangle"""
|
"""draw a filled rectangle"""
|
||||||
|
@ -24,7 +24,7 @@ class SSD1306(Page, Chip):
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, width, height, driver, auto_flush=True):
|
def __init__(self, width, height, driver, auto_flush=False):
|
||||||
Chip.__init__(self, width, height, driver, auto_flush)
|
Chip.__init__(self, width, height, driver, auto_flush)
|
||||||
Page.__init__(self, driver)
|
Page.__init__(self, driver)
|
||||||
self.rotation = 0
|
self.rotation = 0
|
||||||
@ -107,8 +107,8 @@ class SSD1306(Page, Chip):
|
|||||||
self.driver.cmd(pos_x1)
|
self.driver.cmd(pos_x1)
|
||||||
self.driver.cmd(pos_x2)
|
self.driver.cmd(pos_x2)
|
||||||
|
|
||||||
def draw_pixel(self, pos_x, pos_y):
|
def draw_pixel(self, pos_x, pos_y, color=None):
|
||||||
"""draw a pixel at x,y"""
|
"""draw a pixel at x,y"""
|
||||||
if self.rotation == 90 or self.rotation == 270:
|
if self.rotation == 90 or self.rotation == 270:
|
||||||
pos_x, pos_y = pos_y, pos_x
|
pos_x, pos_y = pos_y, pos_x
|
||||||
Page.draw_pixel(self, pos_x, pos_y)
|
Page.draw_pixel(self, pos_x, pos_y, color)
|
||||||
|
Loading…
Reference in New Issue
Block a user