code.py
 1  # SPDX-FileCopyrightText: 2019 Carter Nelson for Adafruit Industries
 2  #
 3  # SPDX-License-Identifier: MIT
 4  
 5  import board
 6  import displayio
 7  
 8  # Release any previously configured displays
 9  displayio.release_displays()
10  
11  # Setup the display bus
12  # Tested with a Metro M4 Express
13  display_bus = displayio.ParallelBus(data0=board.D13,
14                                      command=board.D6,
15                                      chip_select=board.D7,
16                                      write=board.D5,
17                                      read=board.D4)
18  
19  # Setup the initialization sequence
20  # stolen from adafruit_ili9341.py
21  INIT_SEQUENCE = (
22      b"\x01\x80\x80"            # Software reset then delay 0x80 (128ms)
23      b"\xEF\x03\x03\x80\x02"
24      b"\xCF\x03\x00\xC1\x30"
25      b"\xED\x04\x64\x03\x12\x81"
26      b"\xE8\x03\x85\x00\x78"
27      b"\xCB\x05\x39\x2C\x00\x34\x02"
28      b"\xF7\x01\x20"
29      b"\xEA\x02\x00\x00"
30      b"\xc0\x01\x23"            # Power control VRH[5:0]
31      b"\xc1\x01\x10"            # Power control SAP[2:0];BT[3:0]
32      b"\xc5\x02\x3e\x28"        # VCM control
33      b"\xc7\x01\x86"            # VCM control2
34      b"\x36\x01\x38"            # Memory Access Control
35      b"\x37\x01\x00"            # Vertical scroll zero
36      b"\x3a\x01\x55"            # COLMOD: Pixel Format Set
37      b"\xb1\x02\x00\x18"        # Frame Rate Control (In Normal Mode/Full Colors)
38      b"\xb6\x03\x08\x82\x27"    # Display Function Control
39      b"\xF2\x01\x00"            # 3Gamma Function Disable
40      b"\x26\x01\x01"            # Gamma curve selected
41      b"\xe0\x0f\x0F\x31\x2B\x0C\x0E\x08\x4E\xF1\x37\x07\x10\x03\x0E\x09\x00" # Set Gamma
42      b"\xe1\x0f\x00\x0E\x14\x03\x11\x07\x31\xC1\x48\x08\x0F\x0C\x31\x36\x0F" # Set Gamma
43      b"\x11\x80\x78"            # Exit Sleep then delay 0x78 (120ms)
44      b"\x29\x80\x78"            # Display on then delay 0x78 (120ms)
45  )
46  
47  # Setup the Display
48  display = displayio.Display(display_bus, INIT_SEQUENCE, width=320, height=240)
49  
50  #
51  # DONE - now you can use the display however you want
52  #
53  
54  bitmap = displayio.Bitmap(320, 240, 2)
55  
56  palette = displayio.Palette(2)
57  palette[0] = 0
58  palette[1] = 0xFFFFFF
59  
60  for x in range(10, 20):
61      for y in range(10, 20):
62          bitmap[x, y] = 1
63  
64  tile_grid = displayio.TileGrid(bitmap, pixel_shader=palette)
65  
66  group = displayio.Group()
67  group.append(tile_grid)
68  display.show(group)
69  
70  # Loop forever so you can enjoy your image
71  while True:
72      pass