Raspberry Pi Pico - CircuitPython - ILI9341

by nicolaudosbrinquedos in Circuits > Microcontrollers

6066 Views, 7 Favorites, 0 Comments

Raspberry Pi Pico - CircuitPython - ILI9341

Display-LCD-TFT-3.2-240x320-6.jpg
Display-LCD-TFT-3.2-240x320-4.jpg

I decided to write another tutorial on the Raspberry Pi Pico, mainly because the card is very recent and there is still not much documentation on its use. Although CircuitPython is extremely easy to use, most of the examples on the Adafruit website are not yet adapted for the new card.
So I decided to do my part.

This version of the TFT LCD display that I purchased here in Brazil does not come with the CS pin, which is used in many libraries. This offered me some challenge. At the end of the day, I indicated a pin on the nameplate in the call to the driver, but there is no connection made between the CS pin (absent in the display) and the Raspberrry Pi Pico.

---

Eu resolvi escrever mais um tutorial sobre a Raspberry Pi Pico, principalmente porque a placa é muito recente e ainda não existe muita documentação sobre o seu uso. Embora o CircuitPython seja extremamente fácil de ser utilizar, a maioria dos exemplos no site da Adafruit ainda não estão adaptados para a nova placa.
Então eu resolvi fazer a minha parte.

Essa versão do display LCD TFT que eu adquiri aqui no Brasil não vem com o pino CS, que é utilizado em muitas bibliotecas. Isso me ofereceu algum desafio. No final das contas, eu indiquei um pino da plaquinha na chamada para o driver, mas não existe conexão alguma feita entre o pino CS (ausente no display) e a Raspberrry Pi Pico.

Supplies

The Conection and the Code

pico_pinout.png

The connection between the raspberry pi pico and the display looks like this:

-----

A conexão entre a raspberry pi pico e o display ficou assim:

PICO > DISPLAY

3V3 OUT (Pin 36) > VCC

Any GND > GND

SPI0SCK(Pin 4) > SCK

SPI0TX (Pin 5) > MISO

SP0RX (Pin 6) > MOSI

SPI0CS (Pin7) > RES (This display doesn´t have a CS Pin)

PIN 9 > DC

PIN10 > BLK

import board
import busio
import displayio
import terminalio #Just a font
import adafruit_ili9341
from adafruit_display_text import label

dc=board.GP5
rst=board.GP6
blk=board.GP7
cs=board.GP8 #My display does not have it...

spi = busio.SPI(clock=board.GP2, MOSI=board.GP3, MISO=board.GP4)

displayio.release_displays()
display_bus = displayio.FourWire(spi, command = dc, chip_select=cs, reset=rst)

display = adafruit_ili9341.ILI9341(display_bus, width=320, height=240)
splash = displayio.Group(max_size=10)
display.show(splash)

# Draw a green background
color_bitmap = displayio.Bitmap(320, 240, 1)
color_palette = displayio.Palette(1)
color_palette[0] = 0x00FF00 # Bright Green

bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)

splash.append(bg_sprite)

# Draw a smaller inner rectangle
inner_bitmap = displayio.Bitmap(280, 200, 1)
inner_palette = displayio.Palette(1)
inner_palette[0] = 0xAA0088 # Purple
inner_sprite = displayio.TileGrid(inner_bitmap, pixel_shader=inner_palette, x=20, y=20)
splash.append(inner_sprite)

# Draw a label
text_group = displayio.Group(max_size=10, scale=3, x=57, y=120)
text = "Hello World!"
text_area = label.Label(terminalio.FONT, text=text, color=0xFFFF00)
text_group.append(text_area) # Subgroup for text scaling
splash.append(text_group)

If you are typing each of these lines in the REPL, you will be able to see what each one does.

-----

Se você for digitando cada uma dessas linhas no REPL, vai poder ir vendo o que cada uma delas faz.