Go to file
Bartosz Kościów 3f91cc0c7a setup
2017-05-05 12:12:27 +02:00
gfxlcd docs 2017-05-05 12:10:56 +02:00
.gitignore init afer lib extraction from Doton project 2017-04-24 21:52:38 +02:00
.pylintrc init afer lib extraction from Doton project 2017-04-24 21:52:38 +02:00
CHANGELOG.txt touch driver 2017-05-05 11:52:46 +02:00
CONTRIBUTORS.txt init afer lib extraction from Doton project 2017-04-24 21:52:38 +02:00
LICENSE init afer lib extraction from Doton project 2017-04-24 21:52:38 +02:00
MANIFEST.in init afer lib extraction from Doton project 2017-04-24 21:52:38 +02:00
readme.md docs 2017-05-05 12:10:56 +02:00
setup.cfg init afer lib extraction from Doton project 2017-04-24 21:52:38 +02:00
setup.py setup 2017-05-05 12:12:27 +02:00
tests3 init afer lib extraction from Doton project 2017-04-24 21:52:38 +02:00
tox.ini cs 2017-04-29 15:47:37 +02:00

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,
}
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