What it is === Library for graphical LCDs for Python on Raspberry Pi. Creates a united interface for supported devices Supported: - ili325 via GPIO - ssd1306 via SPI - nju6450 via GPIO And for touch panels: - ad7843 via SPI, uses irq or not On NJU and SSD uses buffer to keep current content as help for page operations. Wiring is below Demos are in demos directory LCD initialization === ## SSD1306 ### SPI from driver.ssd1306.spi import SPI from driver.ssd1306.ssd1306 import SSD1306 drv = SPI() o = SSD1306(128, 64, drv) o.init() If you want to set your own pins: drv = SPI() drv.pins = { 'RST': 13, 'DC': 6, } o = SSD1306(128, 64, drv) o.init() ## NJU6450 ### GPIO from gfxlcd.driver.nju6450.gpio import GPIO from gfxlcd.driver.nju6450.nju6450 import NJU6450 drv = GPIO() o = NJU6450(122, 32, drv) o.init() Custom wiring: from gfxlcd.driver.nju6450.gpio import GPIO from gfxlcd.driver.nju6450.nju6450 import NJU6450 drv = GPIO() drv.pins = { 'A0': 17, 'E1': 22, 'E2': 21, 'D0': 23, 'D1': 24, 'D2': 25, 'D3': 12, 'D4': 16, 'D5': 20, 'D6': 26, 'D7': 19, 'RST': 5, } o = NJU6450(122, 32, drv) o.init() ## ILI9325 ### GPIO from gfxlcd.driver.ili9325.gpio import GPIO from gfxlcd.driver.ili9325.ili9325 import ILI9325 drv = GPIO() o = ILI9325(240, 320, drv) o.init() Custom pins: from gfxlcd.driver.ili9325.gpio import GPIO from gfxlcd.driver.ili9325.ili9325 import ILI9325 drv = GPIO() drv.pins = { 'RS': 27, 'W': 17, 'DB8': 22, 'DB9': 23, 'DB10': 24, 'DB11': 5, 'DB12': 12, 'DB13': 16, 'DB14': 20, 'DB15': 21, 'RST': 25, 'LED': None, 'CS': None } o = ILI9325(240, 320, drv) o.init() Drawing functions === draw_pixel(x, y) draw_line(from_x, from_y, to_x, to_y) draw_rect(x1, y1, x2, y2) draw_circle(x1, y1, radius) draw_arc(x1, y1, radius, from_angle, to_angle fill_rect(x1, y1, x2, y2) draw_image(x, y, PIL.Image) Colours === lcd.color = (r, g, b) lcd.background_color = (r, g ,b) lcd.threshold = 255 - for images a threshold between black and white (on monochrome) lcd.transparency_color = [110, 57] #110 - color(s) that are skipped during drawing an image Touch panels === ## AD7843 Constructor: AD7843(width, height, (T_INT), (callback)) Can be used with T_INT def callback(position): print('(x,y)', position) touch = AD7843(240, 320, 26, callback) touch.init() or without: touch = AD7843(240, 320) touch.init() while True: try: time.sleep(0.05) ret = touch.get_position() if ret: print(ret[0], ret[1]) except KeyboardInterrupt: touch.close() There is no automatic calibration. It must be done manually. self.correction = { 'x': 364, 'y': 430, 'ratio_x': 14.35, 'ratio_y': 10.59 } Wiring === ## SSD1306 ### SPI SPI wiring + 2 additional pins. Defaults: LCD Raspberry Pi GND ----------- GND +3.3V ----------- +3.3V SCL ----------- G11 SDA ----------- G10 RST ----------- G13 D/C ----------- G6 ## NJU6450 ### GPIO Default wiring: LCD Raspberry Pi 1 (Vss) ------- GND 2 (Vdd) ------- +5V 3 (V0) ---[-\-] 10k \--- GND 4 (A0) ---------------------- G17 5 (E1) ---------------------- G22 6 (E2) ---------------------- G21 7 (R/W) ------- GND 8 (D0) ---------------------- G23 9 (D1) ---------------------- G24 10 (D2) ---------------------- G25 11 (D3) ---------------------- G12 12 (D4) ---------------------- G16 13 (D5) ---------------------- G20 14 (D6) ---------------------- G26 15 (D7) ---------------------- G19 16 (RST) ------- +5V 17 (A) ------- +5V 18 (K) ------- GND ## ILI9325 ### GPIO Default: TFT Raspberry Pi 2B GND ------------------------ GND Vcc ------------------------ 3.3 RS ------------------------ G27 (data[H]/cmd[L]) WR ------------------------ G17 RD ------------------------ 3.3 (never read from screen) DB8 ------------------------ G22 DB9 ------------------------ G23 DB10 ------------------------ G24 DB11 ------------------------ G5 DB12 ------------------------ G12 DB13 ------------------------ G16 DB14 ------------------------ G20 DB15 ------------------------ G21 CS ------------------------ GND (always selected) REST ------------------------ G25 LED_A ------------------------ 3.3 (can be connected to GPIO pin)