From b2e34a72e26180542110e09298c09ebabfde1374 Mon Sep 17 00:00:00 2001 From: peterhinch Date: Fri, 27 Jan 2023 14:21:56 +0000 Subject: [PATCH] Update setup_examples/ili9486_pico.py. --- setup_examples/ili9486_pico.py | 40 +++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/setup_examples/ili9486_pico.py b/setup_examples/ili9486_pico.py index 47fe7bb..c2c032a 100644 --- a/setup_examples/ili9486_pico.py +++ b/setup_examples/ili9486_pico.py @@ -1,23 +1,53 @@ # ili9486_pico.py Customise for your hardware config # Released under the MIT License (MIT). See LICENSE. +# Copyright (c) 2023 Peter Hinch -# ILI9486 on Pi Pico -# See DRIVERS.md for wiring details. +# As written, supports: +# ili9486 320x480 displays on Pi Pico with ILI9486 or HX8357D controller. +# Edit the driver import statement for other displays. +# Large frame buffer requires GUI to be frozen as bytecode. + +# Tested displays: +# https://www.adafruit.com/product/2050 +# https://www.waveshare.com/product/3.5inch-rpi-lcd-a.htm + +# Demo of initialisation procedure designed to minimise risk of memory fail +# when instantiating the frame buffer. The aim is to do this as early as +# possible before importing other modules. + +# WIRING +# Pico Display +# GPIO Pin +# 3v3 36 Vin +# IO6 9 CLK Hardware SPI0 +# IO7 10 DATA (AKA SI MOSI) +# IO8 11 DC +# IO9 12 Rst +# Gnd 13 Gnd +# IO10 14 CS + +# Pushbuttons are wired between the pin and Gnd +# Pico pin Meaning +# 16 Operate current control +# 17 Decrease value of current control +# 18 Select previous control +# 19 Select next control +# 20 Increase value of current control from machine import Pin, SPI, freq import gc from drivers.ili94xx.ili9486 import ILI9486 as SSD freq(250_000_000) # RP2 overclock - +# Create and export an SSD instance pdc = Pin(8, Pin.OUT, value=0) # Arbitrary pins prst = Pin(9, Pin.OUT, value=1) pcs = Pin(10, Pin.OUT, value=1) spi = SPI(0, sck=Pin(6), mosi=Pin(7), miso=Pin(4), baudrate=30_000_000) gc.collect() # Precaution before instantiating framebuf ssd = SSD(spi, pcs, pdc, prst) -gc.collect() + from gui.core.ugui import Display # Create and export a Display instance # Define control buttons @@ -26,4 +56,4 @@ sel = Pin(16, Pin.IN, Pin.PULL_UP) # Operate current control prev = Pin(18, Pin.IN, Pin.PULL_UP) # Move to previous control increase = Pin(20, Pin.IN, Pin.PULL_UP) # Increase control's value decrease = Pin(17, Pin.IN, Pin.PULL_UP) # Decrease control's value -display = Display(ssd, nxt, sel, prev, increase, decrease) # Pushbutton control +display = Display(ssd, nxt, sel, prev, increase, decrease)