Skip to main content

gfxlcd is a handler for graphical lcds: ILI9328, SSD1306, NJU6450, touch panel: AD7843 @ Raspberry Pi.

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gfxlcd-0.2.0.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

gfxlcd-0.2.0-py2.py3-none-any.whl (18.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file gfxlcd-0.2.0.tar.gz.

File metadata

  • Download URL: gfxlcd-0.2.0.tar.gz
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for gfxlcd-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9d4a44349373f19120e0878a872d98742e6dc5a3b93ae0e80007fc0eb51b90c0
MD5 71f56132e0a679195beb4fda6e8c4a7f
BLAKE2b-256 b99f1ab24d4536020557e127cfec7a95d6fb22b2ae240237995083b8c3042a5c

See more details on using hashes here.

Provenance

File details

Details for the file gfxlcd-0.2.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for gfxlcd-0.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e90d4fa9322ea6c8c7d181265732ed04dabe4dc0ed09103ec40ec4908492bdb1
MD5 b3c46fa72b89957686eb3ad691addab8
BLAKE2b-256 ac57a87e1a83ed332805d5259fc54544280a2c2a3201f3993a039d59ba4a5ca8

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page