annotate ST7735.py @ 2:3fe178258a80 default tip

sysfont
author drewp@bigasterisk.com
date Thu, 11 May 2023 15:07:22 -0700
parents b0c0a808af2b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
drewp@bigasterisk.com
parents:
diff changeset
1 #driver for Sainsmart 1.8" TFT display ST7735
drewp@bigasterisk.com
parents:
diff changeset
2 #Translated by Guy Carver from the ST7735 sample code.
drewp@bigasterisk.com
parents:
diff changeset
3 #Modirfied for micropython-esp32 by boochow
drewp@bigasterisk.com
parents:
diff changeset
4
drewp@bigasterisk.com
parents:
diff changeset
5 import machine
drewp@bigasterisk.com
parents:
diff changeset
6 import micropython
drewp@bigasterisk.com
parents:
diff changeset
7 import time
drewp@bigasterisk.com
parents:
diff changeset
8 from math import sqrt
drewp@bigasterisk.com
parents:
diff changeset
9
drewp@bigasterisk.com
parents:
diff changeset
10 #TFTRotations and TFTRGB are bits to set
drewp@bigasterisk.com
parents:
diff changeset
11 # on MADCTL to control display rotation/color layout
drewp@bigasterisk.com
parents:
diff changeset
12 #Looking at display with pins on top.
drewp@bigasterisk.com
parents:
diff changeset
13 #00 = upper left printing right
drewp@bigasterisk.com
parents:
diff changeset
14 #10 = does nothing (MADCTL_ML)
drewp@bigasterisk.com
parents:
diff changeset
15 #20 = upper left printing down (backwards) (Vertical flip)
drewp@bigasterisk.com
parents:
diff changeset
16 #40 = upper right printing left (backwards) (X Flip)
drewp@bigasterisk.com
parents:
diff changeset
17 #80 = lower left printing right (backwards) (Y Flip)
drewp@bigasterisk.com
parents:
diff changeset
18 #04 = (MADCTL_MH)
drewp@bigasterisk.com
parents:
diff changeset
19
drewp@bigasterisk.com
parents:
diff changeset
20 #60 = 90 right rotation
drewp@bigasterisk.com
parents:
diff changeset
21 #C0 = 180 right rotation
drewp@bigasterisk.com
parents:
diff changeset
22 #A0 = 270 right rotation
drewp@bigasterisk.com
parents:
diff changeset
23 TFTRotations = [0x00, 0x60, 0xC0, 0xA0]
drewp@bigasterisk.com
parents:
diff changeset
24 TFTBGR = 0x08 #When set color is bgr else rgb.
drewp@bigasterisk.com
parents:
diff changeset
25 TFTRGB = 0x00
drewp@bigasterisk.com
parents:
diff changeset
26
drewp@bigasterisk.com
parents:
diff changeset
27 #@micropython.native
drewp@bigasterisk.com
parents:
diff changeset
28 def clamp( aValue, aMin, aMax ) :
drewp@bigasterisk.com
parents:
diff changeset
29 return max(aMin, min(aMax, aValue))
drewp@bigasterisk.com
parents:
diff changeset
30
drewp@bigasterisk.com
parents:
diff changeset
31 #@micropython.native
drewp@bigasterisk.com
parents:
diff changeset
32 def TFTColor( aR, aG, aB ) :
drewp@bigasterisk.com
parents:
diff changeset
33 '''Create a 16 bit rgb value from the given R,G,B from 0-255.
drewp@bigasterisk.com
parents:
diff changeset
34 This assumes rgb 565 layout and will be incorrect for bgr.'''
drewp@bigasterisk.com
parents:
diff changeset
35 return ((aR & 0xF8) << 8) | ((aG & 0xFC) << 3) | (aB >> 3)
drewp@bigasterisk.com
parents:
diff changeset
36
drewp@bigasterisk.com
parents:
diff changeset
37 ScreenSize = (128, 160)
drewp@bigasterisk.com
parents:
diff changeset
38
drewp@bigasterisk.com
parents:
diff changeset
39 class TFT(object) :
drewp@bigasterisk.com
parents:
diff changeset
40 """Sainsmart TFT 7735 display driver."""
drewp@bigasterisk.com
parents:
diff changeset
41
drewp@bigasterisk.com
parents:
diff changeset
42 NOP = 0x0
drewp@bigasterisk.com
parents:
diff changeset
43 SWRESET = 0x01
drewp@bigasterisk.com
parents:
diff changeset
44 RDDID = 0x04
drewp@bigasterisk.com
parents:
diff changeset
45 RDDST = 0x09
drewp@bigasterisk.com
parents:
diff changeset
46
drewp@bigasterisk.com
parents:
diff changeset
47 SLPIN = 0x10
drewp@bigasterisk.com
parents:
diff changeset
48 SLPOUT = 0x11
drewp@bigasterisk.com
parents:
diff changeset
49 PTLON = 0x12
drewp@bigasterisk.com
parents:
diff changeset
50 NORON = 0x13
drewp@bigasterisk.com
parents:
diff changeset
51
drewp@bigasterisk.com
parents:
diff changeset
52 INVOFF = 0x20
drewp@bigasterisk.com
parents:
diff changeset
53 INVON = 0x21
drewp@bigasterisk.com
parents:
diff changeset
54 DISPOFF = 0x28
drewp@bigasterisk.com
parents:
diff changeset
55 DISPON = 0x29
drewp@bigasterisk.com
parents:
diff changeset
56 CASET = 0x2A
drewp@bigasterisk.com
parents:
diff changeset
57 RASET = 0x2B
drewp@bigasterisk.com
parents:
diff changeset
58 RAMWR = 0x2C
drewp@bigasterisk.com
parents:
diff changeset
59 RAMRD = 0x2E
drewp@bigasterisk.com
parents:
diff changeset
60
drewp@bigasterisk.com
parents:
diff changeset
61 VSCRDEF = 0x33
drewp@bigasterisk.com
parents:
diff changeset
62 VSCSAD = 0x37
drewp@bigasterisk.com
parents:
diff changeset
63
drewp@bigasterisk.com
parents:
diff changeset
64 COLMOD = 0x3A
drewp@bigasterisk.com
parents:
diff changeset
65 MADCTL = 0x36
drewp@bigasterisk.com
parents:
diff changeset
66
drewp@bigasterisk.com
parents:
diff changeset
67 FRMCTR1 = 0xB1
drewp@bigasterisk.com
parents:
diff changeset
68 FRMCTR2 = 0xB2
drewp@bigasterisk.com
parents:
diff changeset
69 FRMCTR3 = 0xB3
drewp@bigasterisk.com
parents:
diff changeset
70 INVCTR = 0xB4
drewp@bigasterisk.com
parents:
diff changeset
71 DISSET5 = 0xB6
drewp@bigasterisk.com
parents:
diff changeset
72
drewp@bigasterisk.com
parents:
diff changeset
73 PWCTR1 = 0xC0
drewp@bigasterisk.com
parents:
diff changeset
74 PWCTR2 = 0xC1
drewp@bigasterisk.com
parents:
diff changeset
75 PWCTR3 = 0xC2
drewp@bigasterisk.com
parents:
diff changeset
76 PWCTR4 = 0xC3
drewp@bigasterisk.com
parents:
diff changeset
77 PWCTR5 = 0xC4
drewp@bigasterisk.com
parents:
diff changeset
78 VMCTR1 = 0xC5
drewp@bigasterisk.com
parents:
diff changeset
79
drewp@bigasterisk.com
parents:
diff changeset
80 RDID1 = 0xDA
drewp@bigasterisk.com
parents:
diff changeset
81 RDID2 = 0xDB
drewp@bigasterisk.com
parents:
diff changeset
82 RDID3 = 0xDC
drewp@bigasterisk.com
parents:
diff changeset
83 RDID4 = 0xDD
drewp@bigasterisk.com
parents:
diff changeset
84
drewp@bigasterisk.com
parents:
diff changeset
85 PWCTR6 = 0xFC
drewp@bigasterisk.com
parents:
diff changeset
86
drewp@bigasterisk.com
parents:
diff changeset
87 GMCTRP1 = 0xE0
drewp@bigasterisk.com
parents:
diff changeset
88 GMCTRN1 = 0xE1
drewp@bigasterisk.com
parents:
diff changeset
89
drewp@bigasterisk.com
parents:
diff changeset
90 BLACK = 0
drewp@bigasterisk.com
parents:
diff changeset
91 RED = TFTColor(0xFF, 0x00, 0x00)
drewp@bigasterisk.com
parents:
diff changeset
92 MAROON = TFTColor(0x80, 0x00, 0x00)
drewp@bigasterisk.com
parents:
diff changeset
93 GREEN = TFTColor(0x00, 0xFF, 0x00)
drewp@bigasterisk.com
parents:
diff changeset
94 FOREST = TFTColor(0x00, 0x80, 0x80)
drewp@bigasterisk.com
parents:
diff changeset
95 BLUE = TFTColor(0x00, 0x00, 0xFF)
drewp@bigasterisk.com
parents:
diff changeset
96 NAVY = TFTColor(0x00, 0x00, 0x80)
drewp@bigasterisk.com
parents:
diff changeset
97 CYAN = TFTColor(0x00, 0xFF, 0xFF)
drewp@bigasterisk.com
parents:
diff changeset
98 YELLOW = TFTColor(0xFF, 0xFF, 0x00)
drewp@bigasterisk.com
parents:
diff changeset
99 PURPLE = TFTColor(0xFF, 0x00, 0xFF)
drewp@bigasterisk.com
parents:
diff changeset
100 WHITE = TFTColor(0xFF, 0xFF, 0xFF)
drewp@bigasterisk.com
parents:
diff changeset
101 GRAY = TFTColor(0x80, 0x80, 0x80)
drewp@bigasterisk.com
parents:
diff changeset
102
drewp@bigasterisk.com
parents:
diff changeset
103 @staticmethod
drewp@bigasterisk.com
parents:
diff changeset
104 def color( aR, aG, aB ) :
drewp@bigasterisk.com
parents:
diff changeset
105 '''Create a 565 rgb TFTColor value'''
drewp@bigasterisk.com
parents:
diff changeset
106 return TFTColor(aR, aG, aB)
drewp@bigasterisk.com
parents:
diff changeset
107
drewp@bigasterisk.com
parents:
diff changeset
108 def __init__( self, spi, aDC, aReset, aCS) :
drewp@bigasterisk.com
parents:
diff changeset
109 """aLoc SPI pin location is either 1 for 'X' or 2 for 'Y'.
drewp@bigasterisk.com
parents:
diff changeset
110 aDC is the DC pin and aReset is the reset pin."""
drewp@bigasterisk.com
parents:
diff changeset
111 self._size = ScreenSize
drewp@bigasterisk.com
parents:
diff changeset
112 self._offset = bytearray([0,0])
drewp@bigasterisk.com
parents:
diff changeset
113 self.rotate = 0 #Vertical with top toward pins.
drewp@bigasterisk.com
parents:
diff changeset
114 self._rgb = True #color order of rgb.
drewp@bigasterisk.com
parents:
diff changeset
115 self.tfa = 0 #top fixed area
drewp@bigasterisk.com
parents:
diff changeset
116 self.bfa = 0 #bottom fixed area
drewp@bigasterisk.com
parents:
diff changeset
117 self.dc = machine.Pin(aDC, machine.Pin.OUT, machine.Pin.PULL_DOWN)
drewp@bigasterisk.com
parents:
diff changeset
118 self.reset = machine.Pin(aReset, machine.Pin.OUT, machine.Pin.PULL_DOWN)
drewp@bigasterisk.com
parents:
diff changeset
119 self.cs = machine.Pin(aCS, machine.Pin.OUT, machine.Pin.PULL_DOWN)
drewp@bigasterisk.com
parents:
diff changeset
120 self.cs(1)
drewp@bigasterisk.com
parents:
diff changeset
121 self.spi = spi
drewp@bigasterisk.com
parents:
diff changeset
122 self.colorData = bytearray(2)
drewp@bigasterisk.com
parents:
diff changeset
123 self.windowLocData = bytearray(4)
drewp@bigasterisk.com
parents:
diff changeset
124
drewp@bigasterisk.com
parents:
diff changeset
125 def size( self ) :
drewp@bigasterisk.com
parents:
diff changeset
126 return self._size
drewp@bigasterisk.com
parents:
diff changeset
127
drewp@bigasterisk.com
parents:
diff changeset
128 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
129 def on( self, aTF = True ) :
drewp@bigasterisk.com
parents:
diff changeset
130 '''Turn display on or off.'''
drewp@bigasterisk.com
parents:
diff changeset
131 self._writecommand(TFT.DISPON if aTF else TFT.DISPOFF)
drewp@bigasterisk.com
parents:
diff changeset
132
drewp@bigasterisk.com
parents:
diff changeset
133 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
134 def invertcolor( self, aBool ) :
drewp@bigasterisk.com
parents:
diff changeset
135 '''Invert the color data IE: Black = White.'''
drewp@bigasterisk.com
parents:
diff changeset
136 self._writecommand(TFT.INVON if aBool else TFT.INVOFF)
drewp@bigasterisk.com
parents:
diff changeset
137
drewp@bigasterisk.com
parents:
diff changeset
138 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
139 def rgb( self, aTF = True ) :
drewp@bigasterisk.com
parents:
diff changeset
140 '''True = rgb else bgr'''
drewp@bigasterisk.com
parents:
diff changeset
141 self._rgb = aTF
drewp@bigasterisk.com
parents:
diff changeset
142 self._setMADCTL()
drewp@bigasterisk.com
parents:
diff changeset
143
drewp@bigasterisk.com
parents:
diff changeset
144 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
145 def rotation( self, aRot ) :
drewp@bigasterisk.com
parents:
diff changeset
146 '''0 - 3. Starts vertical with top toward pins and rotates 90 deg
drewp@bigasterisk.com
parents:
diff changeset
147 clockwise each step.'''
drewp@bigasterisk.com
parents:
diff changeset
148 if (0 <= aRot < 4):
drewp@bigasterisk.com
parents:
diff changeset
149 rotchange = self.rotate ^ aRot
drewp@bigasterisk.com
parents:
diff changeset
150 self.rotate = aRot
drewp@bigasterisk.com
parents:
diff changeset
151 #If switching from vertical to horizontal swap x,y
drewp@bigasterisk.com
parents:
diff changeset
152 # (indicated by bit 0 changing).
drewp@bigasterisk.com
parents:
diff changeset
153 if (rotchange & 1):
drewp@bigasterisk.com
parents:
diff changeset
154 self._size =(self._size[1], self._size[0])
drewp@bigasterisk.com
parents:
diff changeset
155 self._setMADCTL()
drewp@bigasterisk.com
parents:
diff changeset
156
drewp@bigasterisk.com
parents:
diff changeset
157 @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
158 def pixel( self, aPos, aColor ) :
drewp@bigasterisk.com
parents:
diff changeset
159 '''Draw a pixel at the given position'''
drewp@bigasterisk.com
parents:
diff changeset
160 if 0 <= aPos[0] < self._size[0] and 0 <= aPos[1] < self._size[1]:
drewp@bigasterisk.com
parents:
diff changeset
161 self._setwindowpoint(aPos)
drewp@bigasterisk.com
parents:
diff changeset
162 self._pushcolor(aColor)
drewp@bigasterisk.com
parents:
diff changeset
163
drewp@bigasterisk.com
parents:
diff changeset
164 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
165 def text( self, aPos, aString, aColor, aFont, aSize = 1, nowrap = False ) :
drewp@bigasterisk.com
parents:
diff changeset
166 '''Draw a text at the given position. If the string reaches the end of the
drewp@bigasterisk.com
parents:
diff changeset
167 display it is wrapped to aPos[0] on the next line. aSize may be an integer
drewp@bigasterisk.com
parents:
diff changeset
168 which will size the font uniformly on w,h or a or any type that may be
drewp@bigasterisk.com
parents:
diff changeset
169 indexed with [0] or [1].'''
drewp@bigasterisk.com
parents:
diff changeset
170
drewp@bigasterisk.com
parents:
diff changeset
171 if aFont == None:
drewp@bigasterisk.com
parents:
diff changeset
172 return
drewp@bigasterisk.com
parents:
diff changeset
173
drewp@bigasterisk.com
parents:
diff changeset
174 #Make a size either from single value or 2 elements.
drewp@bigasterisk.com
parents:
diff changeset
175 if (type(aSize) == int) or (type(aSize) == float):
drewp@bigasterisk.com
parents:
diff changeset
176 wh = (aSize, aSize)
drewp@bigasterisk.com
parents:
diff changeset
177 else:
drewp@bigasterisk.com
parents:
diff changeset
178 wh = aSize
drewp@bigasterisk.com
parents:
diff changeset
179
drewp@bigasterisk.com
parents:
diff changeset
180 px, py = aPos
drewp@bigasterisk.com
parents:
diff changeset
181 width = wh[0] * aFont["Width"] + 1
drewp@bigasterisk.com
parents:
diff changeset
182 for c in aString:
drewp@bigasterisk.com
parents:
diff changeset
183 self.char((px, py), c, aColor, aFont, wh)
drewp@bigasterisk.com
parents:
diff changeset
184 px += width
drewp@bigasterisk.com
parents:
diff changeset
185 #We check > rather than >= to let the right (blank) edge of the
drewp@bigasterisk.com
parents:
diff changeset
186 # character print off the right of the screen.
drewp@bigasterisk.com
parents:
diff changeset
187 if px + width > self._size[0]:
drewp@bigasterisk.com
parents:
diff changeset
188 if nowrap:
drewp@bigasterisk.com
parents:
diff changeset
189 break
drewp@bigasterisk.com
parents:
diff changeset
190 else:
drewp@bigasterisk.com
parents:
diff changeset
191 py += aFont["Height"] * wh[1] + 1
drewp@bigasterisk.com
parents:
diff changeset
192 px = aPos[0]
drewp@bigasterisk.com
parents:
diff changeset
193
drewp@bigasterisk.com
parents:
diff changeset
194 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
195 def char( self, aPos, aChar, aColor, aFont, aSizes ) :
drewp@bigasterisk.com
parents:
diff changeset
196 '''Draw a character at the given position using the given font and color.
drewp@bigasterisk.com
parents:
diff changeset
197 aSizes is a tuple with x, y as integer scales indicating the
drewp@bigasterisk.com
parents:
diff changeset
198 # of pixels to draw for each pixel in the character.'''
drewp@bigasterisk.com
parents:
diff changeset
199
drewp@bigasterisk.com
parents:
diff changeset
200 if aFont == None:
drewp@bigasterisk.com
parents:
diff changeset
201 return
drewp@bigasterisk.com
parents:
diff changeset
202
drewp@bigasterisk.com
parents:
diff changeset
203 startchar = aFont['Start']
drewp@bigasterisk.com
parents:
diff changeset
204 endchar = aFont['End']
drewp@bigasterisk.com
parents:
diff changeset
205
drewp@bigasterisk.com
parents:
diff changeset
206 ci = ord(aChar)
drewp@bigasterisk.com
parents:
diff changeset
207 if (startchar <= ci <= endchar):
drewp@bigasterisk.com
parents:
diff changeset
208 fontw = aFont['Width']
drewp@bigasterisk.com
parents:
diff changeset
209 fonth = aFont['Height']
drewp@bigasterisk.com
parents:
diff changeset
210 ci = (ci - startchar) * fontw
drewp@bigasterisk.com
parents:
diff changeset
211
drewp@bigasterisk.com
parents:
diff changeset
212 charA = aFont["Data"][ci:ci + fontw]
drewp@bigasterisk.com
parents:
diff changeset
213 px = aPos[0]
drewp@bigasterisk.com
parents:
diff changeset
214 if aSizes[0] <= 1 and aSizes[1] <= 1 :
drewp@bigasterisk.com
parents:
diff changeset
215 buf = bytearray(2 * fonth * fontw)
drewp@bigasterisk.com
parents:
diff changeset
216 for q in range(fontw) :
drewp@bigasterisk.com
parents:
diff changeset
217 c = charA[q]
drewp@bigasterisk.com
parents:
diff changeset
218 for r in range(fonth) :
drewp@bigasterisk.com
parents:
diff changeset
219 if c & 0x01 :
drewp@bigasterisk.com
parents:
diff changeset
220 pos = 2 * (r * fontw + q)
drewp@bigasterisk.com
parents:
diff changeset
221 buf[pos] = aColor >> 8
drewp@bigasterisk.com
parents:
diff changeset
222 buf[pos + 1] = aColor & 0xff
drewp@bigasterisk.com
parents:
diff changeset
223 c >>= 1
drewp@bigasterisk.com
parents:
diff changeset
224 self.image(aPos[0], aPos[1], aPos[0] + fontw - 1, aPos[1] + fonth - 1, buf)
drewp@bigasterisk.com
parents:
diff changeset
225 else:
drewp@bigasterisk.com
parents:
diff changeset
226 for c in charA :
drewp@bigasterisk.com
parents:
diff changeset
227 py = aPos[1]
drewp@bigasterisk.com
parents:
diff changeset
228 for r in range(fonth) :
drewp@bigasterisk.com
parents:
diff changeset
229 if c & 0x01 :
drewp@bigasterisk.com
parents:
diff changeset
230 self.fillrect((px, py), aSizes, aColor)
drewp@bigasterisk.com
parents:
diff changeset
231 py += aSizes[1]
drewp@bigasterisk.com
parents:
diff changeset
232 c >>= 1
drewp@bigasterisk.com
parents:
diff changeset
233 px += aSizes[0]
drewp@bigasterisk.com
parents:
diff changeset
234
drewp@bigasterisk.com
parents:
diff changeset
235 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
236 def line( self, aStart, aEnd, aColor ) :
drewp@bigasterisk.com
parents:
diff changeset
237 '''Draws a line from aStart to aEnd in the given color. Vertical or horizontal
drewp@bigasterisk.com
parents:
diff changeset
238 lines are forwarded to vline and hline.'''
drewp@bigasterisk.com
parents:
diff changeset
239 if aStart[0] == aEnd[0]:
drewp@bigasterisk.com
parents:
diff changeset
240 #Make sure we use the smallest y.
drewp@bigasterisk.com
parents:
diff changeset
241 pnt = aEnd if (aEnd[1] < aStart[1]) else aStart
drewp@bigasterisk.com
parents:
diff changeset
242 self.vline(pnt, abs(aEnd[1] - aStart[1]) + 1, aColor)
drewp@bigasterisk.com
parents:
diff changeset
243 elif aStart[1] == aEnd[1]:
drewp@bigasterisk.com
parents:
diff changeset
244 #Make sure we use the smallest x.
drewp@bigasterisk.com
parents:
diff changeset
245 pnt = aEnd if aEnd[0] < aStart[0] else aStart
drewp@bigasterisk.com
parents:
diff changeset
246 self.hline(pnt, abs(aEnd[0] - aStart[0]) + 1, aColor)
drewp@bigasterisk.com
parents:
diff changeset
247 else:
drewp@bigasterisk.com
parents:
diff changeset
248 px, py = aStart
drewp@bigasterisk.com
parents:
diff changeset
249 ex, ey = aEnd
drewp@bigasterisk.com
parents:
diff changeset
250 dx = ex - px
drewp@bigasterisk.com
parents:
diff changeset
251 dy = ey - py
drewp@bigasterisk.com
parents:
diff changeset
252 inx = 1 if dx > 0 else -1
drewp@bigasterisk.com
parents:
diff changeset
253 iny = 1 if dy > 0 else -1
drewp@bigasterisk.com
parents:
diff changeset
254
drewp@bigasterisk.com
parents:
diff changeset
255 dx = abs(dx)
drewp@bigasterisk.com
parents:
diff changeset
256 dy = abs(dy)
drewp@bigasterisk.com
parents:
diff changeset
257 if (dx >= dy):
drewp@bigasterisk.com
parents:
diff changeset
258 dy <<= 1
drewp@bigasterisk.com
parents:
diff changeset
259 e = dy - dx
drewp@bigasterisk.com
parents:
diff changeset
260 dx <<= 1
drewp@bigasterisk.com
parents:
diff changeset
261 while (px != ex):
drewp@bigasterisk.com
parents:
diff changeset
262 self.pixel((px, py), aColor)
drewp@bigasterisk.com
parents:
diff changeset
263 if (e >= 0):
drewp@bigasterisk.com
parents:
diff changeset
264 py += iny
drewp@bigasterisk.com
parents:
diff changeset
265 e -= dx
drewp@bigasterisk.com
parents:
diff changeset
266 e += dy
drewp@bigasterisk.com
parents:
diff changeset
267 px += inx
drewp@bigasterisk.com
parents:
diff changeset
268 else:
drewp@bigasterisk.com
parents:
diff changeset
269 dx <<= 1
drewp@bigasterisk.com
parents:
diff changeset
270 e = dx - dy
drewp@bigasterisk.com
parents:
diff changeset
271 dy <<= 1
drewp@bigasterisk.com
parents:
diff changeset
272 while (py != ey):
drewp@bigasterisk.com
parents:
diff changeset
273 self.pixel((px, py), aColor)
drewp@bigasterisk.com
parents:
diff changeset
274 if (e >= 0):
drewp@bigasterisk.com
parents:
diff changeset
275 px += inx
drewp@bigasterisk.com
parents:
diff changeset
276 e -= dy
drewp@bigasterisk.com
parents:
diff changeset
277 e += dx
drewp@bigasterisk.com
parents:
diff changeset
278 py += iny
drewp@bigasterisk.com
parents:
diff changeset
279
drewp@bigasterisk.com
parents:
diff changeset
280 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
281 def vline( self, aStart, aLen, aColor ) :
drewp@bigasterisk.com
parents:
diff changeset
282 '''Draw a vertical line from aStart for aLen. aLen may be negative.'''
drewp@bigasterisk.com
parents:
diff changeset
283 start = (clamp(aStart[0], 0, self._size[0]), clamp(aStart[1], 0, self._size[1]))
drewp@bigasterisk.com
parents:
diff changeset
284 stop = (start[0], clamp(start[1] + aLen, 0, self._size[1]))
drewp@bigasterisk.com
parents:
diff changeset
285 #Make sure smallest y 1st.
drewp@bigasterisk.com
parents:
diff changeset
286 if (stop[1] < start[1]):
drewp@bigasterisk.com
parents:
diff changeset
287 start, stop = stop, start
drewp@bigasterisk.com
parents:
diff changeset
288 self._setwindowloc(start, stop)
drewp@bigasterisk.com
parents:
diff changeset
289 self._setColor(aColor)
drewp@bigasterisk.com
parents:
diff changeset
290 self._draw(aLen)
drewp@bigasterisk.com
parents:
diff changeset
291
drewp@bigasterisk.com
parents:
diff changeset
292 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
293 def hline( self, aStart, aLen, aColor ) :
drewp@bigasterisk.com
parents:
diff changeset
294 '''Draw a horizontal line from aStart for aLen. aLen may be negative.'''
drewp@bigasterisk.com
parents:
diff changeset
295 start = (clamp(aStart[0], 0, self._size[0]), clamp(aStart[1], 0, self._size[1]))
drewp@bigasterisk.com
parents:
diff changeset
296 stop = (clamp(start[0] + aLen, 0, self._size[0]), start[1])
drewp@bigasterisk.com
parents:
diff changeset
297 #Make sure smallest x 1st.
drewp@bigasterisk.com
parents:
diff changeset
298 if (stop[0] < start[0]):
drewp@bigasterisk.com
parents:
diff changeset
299 start, stop = stop, start
drewp@bigasterisk.com
parents:
diff changeset
300 self._setwindowloc(start, stop)
drewp@bigasterisk.com
parents:
diff changeset
301 self._setColor(aColor)
drewp@bigasterisk.com
parents:
diff changeset
302 self._draw(aLen)
drewp@bigasterisk.com
parents:
diff changeset
303
drewp@bigasterisk.com
parents:
diff changeset
304 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
305 def rect( self, aStart, aSize, aColor ) :
drewp@bigasterisk.com
parents:
diff changeset
306 '''Draw a hollow rectangle. aStart is the smallest coordinate corner
drewp@bigasterisk.com
parents:
diff changeset
307 and aSize is a tuple indicating width, height.'''
drewp@bigasterisk.com
parents:
diff changeset
308 self.hline(aStart, aSize[0], aColor)
drewp@bigasterisk.com
parents:
diff changeset
309 self.hline((aStart[0], aStart[1] + aSize[1] - 1), aSize[0], aColor)
drewp@bigasterisk.com
parents:
diff changeset
310 self.vline(aStart, aSize[1], aColor)
drewp@bigasterisk.com
parents:
diff changeset
311 self.vline((aStart[0] + aSize[0] - 1, aStart[1]), aSize[1], aColor)
drewp@bigasterisk.com
parents:
diff changeset
312
drewp@bigasterisk.com
parents:
diff changeset
313 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
314 def fillrect( self, aStart, aSize, aColor ) :
drewp@bigasterisk.com
parents:
diff changeset
315 '''Draw a filled rectangle. aStart is the smallest coordinate corner
drewp@bigasterisk.com
parents:
diff changeset
316 and aSize is a tuple indicating width, height.'''
drewp@bigasterisk.com
parents:
diff changeset
317 start = (clamp(aStart[0], 0, self._size[0]), clamp(aStart[1], 0, self._size[1]))
drewp@bigasterisk.com
parents:
diff changeset
318 end = (clamp(start[0] + aSize[0] - 1, 0, self._size[0]), clamp(start[1] + aSize[1] - 1, 0, self._size[1]))
drewp@bigasterisk.com
parents:
diff changeset
319
drewp@bigasterisk.com
parents:
diff changeset
320 if (end[0] < start[0]):
drewp@bigasterisk.com
parents:
diff changeset
321 tmp = end[0]
drewp@bigasterisk.com
parents:
diff changeset
322 end = (start[0], end[1])
drewp@bigasterisk.com
parents:
diff changeset
323 start = (tmp, start[1])
drewp@bigasterisk.com
parents:
diff changeset
324 if (end[1] < start[1]):
drewp@bigasterisk.com
parents:
diff changeset
325 tmp = end[1]
drewp@bigasterisk.com
parents:
diff changeset
326 end = (end[0], start[1])
drewp@bigasterisk.com
parents:
diff changeset
327 start = (start[0], tmp)
drewp@bigasterisk.com
parents:
diff changeset
328
drewp@bigasterisk.com
parents:
diff changeset
329 self._setwindowloc(start, end)
drewp@bigasterisk.com
parents:
diff changeset
330 numPixels = (end[0] - start[0] + 1) * (end[1] - start[1] + 1)
drewp@bigasterisk.com
parents:
diff changeset
331 self._setColor(aColor)
drewp@bigasterisk.com
parents:
diff changeset
332 self._draw(numPixels)
drewp@bigasterisk.com
parents:
diff changeset
333
drewp@bigasterisk.com
parents:
diff changeset
334 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
335 def circle( self, aPos, aRadius, aColor ) :
drewp@bigasterisk.com
parents:
diff changeset
336 '''Draw a hollow circle with the given radius and color with aPos as center.'''
drewp@bigasterisk.com
parents:
diff changeset
337 self.colorData[0] = aColor >> 8
drewp@bigasterisk.com
parents:
diff changeset
338 self.colorData[1] = aColor
drewp@bigasterisk.com
parents:
diff changeset
339 xend = int(0.7071 * aRadius) + 1
drewp@bigasterisk.com
parents:
diff changeset
340 rsq = aRadius * aRadius
drewp@bigasterisk.com
parents:
diff changeset
341 for x in range(xend) :
drewp@bigasterisk.com
parents:
diff changeset
342 y = int(sqrt(rsq - x * x))
drewp@bigasterisk.com
parents:
diff changeset
343 xp = aPos[0] + x
drewp@bigasterisk.com
parents:
diff changeset
344 yp = aPos[1] + y
drewp@bigasterisk.com
parents:
diff changeset
345 xn = aPos[0] - x
drewp@bigasterisk.com
parents:
diff changeset
346 yn = aPos[1] - y
drewp@bigasterisk.com
parents:
diff changeset
347 xyp = aPos[0] + y
drewp@bigasterisk.com
parents:
diff changeset
348 yxp = aPos[1] + x
drewp@bigasterisk.com
parents:
diff changeset
349 xyn = aPos[0] - y
drewp@bigasterisk.com
parents:
diff changeset
350 yxn = aPos[1] - x
drewp@bigasterisk.com
parents:
diff changeset
351
drewp@bigasterisk.com
parents:
diff changeset
352 self._setwindowpoint((xp, yp))
drewp@bigasterisk.com
parents:
diff changeset
353 self._writedata(self.colorData)
drewp@bigasterisk.com
parents:
diff changeset
354 self._setwindowpoint((xp, yn))
drewp@bigasterisk.com
parents:
diff changeset
355 self._writedata(self.colorData)
drewp@bigasterisk.com
parents:
diff changeset
356 self._setwindowpoint((xn, yp))
drewp@bigasterisk.com
parents:
diff changeset
357 self._writedata(self.colorData)
drewp@bigasterisk.com
parents:
diff changeset
358 self._setwindowpoint((xn, yn))
drewp@bigasterisk.com
parents:
diff changeset
359 self._writedata(self.colorData)
drewp@bigasterisk.com
parents:
diff changeset
360 self._setwindowpoint((xyp, yxp))
drewp@bigasterisk.com
parents:
diff changeset
361 self._writedata(self.colorData)
drewp@bigasterisk.com
parents:
diff changeset
362 self._setwindowpoint((xyp, yxn))
drewp@bigasterisk.com
parents:
diff changeset
363 self._writedata(self.colorData)
drewp@bigasterisk.com
parents:
diff changeset
364 self._setwindowpoint((xyn, yxp))
drewp@bigasterisk.com
parents:
diff changeset
365 self._writedata(self.colorData)
drewp@bigasterisk.com
parents:
diff changeset
366 self._setwindowpoint((xyn, yxn))
drewp@bigasterisk.com
parents:
diff changeset
367 self._writedata(self.colorData)
drewp@bigasterisk.com
parents:
diff changeset
368
drewp@bigasterisk.com
parents:
diff changeset
369 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
370 def fillcircle( self, aPos, aRadius, aColor ) :
drewp@bigasterisk.com
parents:
diff changeset
371 '''Draw a filled circle with given radius and color with aPos as center'''
drewp@bigasterisk.com
parents:
diff changeset
372 rsq = aRadius * aRadius
drewp@bigasterisk.com
parents:
diff changeset
373 for x in range(aRadius) :
drewp@bigasterisk.com
parents:
diff changeset
374 y = int(sqrt(rsq - x * x))
drewp@bigasterisk.com
parents:
diff changeset
375 y0 = aPos[1] - y
drewp@bigasterisk.com
parents:
diff changeset
376 ey = y0 + y * 2
drewp@bigasterisk.com
parents:
diff changeset
377 y0 = clamp(y0, 0, self._size[1])
drewp@bigasterisk.com
parents:
diff changeset
378 ln = abs(ey - y0) + 1;
drewp@bigasterisk.com
parents:
diff changeset
379
drewp@bigasterisk.com
parents:
diff changeset
380 self.vline((aPos[0] + x, y0), ln, aColor)
drewp@bigasterisk.com
parents:
diff changeset
381 self.vline((aPos[0] - x, y0), ln, aColor)
drewp@bigasterisk.com
parents:
diff changeset
382
drewp@bigasterisk.com
parents:
diff changeset
383 def fill( self, aColor = BLACK ) :
drewp@bigasterisk.com
parents:
diff changeset
384 '''Fill screen with the given color.'''
drewp@bigasterisk.com
parents:
diff changeset
385 self.fillrect((0, 0), self._size, aColor)
drewp@bigasterisk.com
parents:
diff changeset
386
drewp@bigasterisk.com
parents:
diff changeset
387 def image( self, x0, y0, x1, y1, data ) :
drewp@bigasterisk.com
parents:
diff changeset
388 self._setwindowloc((x0, y0), (x1, y1))
drewp@bigasterisk.com
parents:
diff changeset
389 self._writedata(data)
drewp@bigasterisk.com
parents:
diff changeset
390
drewp@bigasterisk.com
parents:
diff changeset
391 def setvscroll(self, tfa, bfa) :
drewp@bigasterisk.com
parents:
diff changeset
392 ''' set vertical scroll area '''
drewp@bigasterisk.com
parents:
diff changeset
393 self._writecommand(TFT.VSCRDEF)
drewp@bigasterisk.com
parents:
diff changeset
394 data2 = bytearray([0, tfa])
drewp@bigasterisk.com
parents:
diff changeset
395 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
396 data2[1] = 162 - tfa - bfa
drewp@bigasterisk.com
parents:
diff changeset
397 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
398 data2[1] = bfa
drewp@bigasterisk.com
parents:
diff changeset
399 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
400 self.tfa = tfa
drewp@bigasterisk.com
parents:
diff changeset
401 self.bfa = bfa
drewp@bigasterisk.com
parents:
diff changeset
402
drewp@bigasterisk.com
parents:
diff changeset
403 def vscroll(self, value) :
drewp@bigasterisk.com
parents:
diff changeset
404 a = value + self.tfa
drewp@bigasterisk.com
parents:
diff changeset
405 if (a + self.bfa > 162) :
drewp@bigasterisk.com
parents:
diff changeset
406 a = 162 - self.bfa
drewp@bigasterisk.com
parents:
diff changeset
407 self._vscrolladdr(a)
drewp@bigasterisk.com
parents:
diff changeset
408
drewp@bigasterisk.com
parents:
diff changeset
409 def _vscrolladdr(self, addr) :
drewp@bigasterisk.com
parents:
diff changeset
410 self._writecommand(TFT.VSCSAD)
drewp@bigasterisk.com
parents:
diff changeset
411 data2 = bytearray([addr >> 8, addr & 0xff])
drewp@bigasterisk.com
parents:
diff changeset
412 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
413
drewp@bigasterisk.com
parents:
diff changeset
414 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
415 def _setColor( self, aColor ) :
drewp@bigasterisk.com
parents:
diff changeset
416 self.colorData[0] = aColor >> 8
drewp@bigasterisk.com
parents:
diff changeset
417 self.colorData[1] = aColor
drewp@bigasterisk.com
parents:
diff changeset
418 self.buf = bytes(self.colorData) * 32
drewp@bigasterisk.com
parents:
diff changeset
419
drewp@bigasterisk.com
parents:
diff changeset
420 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
421 def _draw( self, aPixels ) :
drewp@bigasterisk.com
parents:
diff changeset
422 '''Send given color to the device aPixels times.'''
drewp@bigasterisk.com
parents:
diff changeset
423
drewp@bigasterisk.com
parents:
diff changeset
424 self.dc(1)
drewp@bigasterisk.com
parents:
diff changeset
425 self.cs(0)
drewp@bigasterisk.com
parents:
diff changeset
426 for i in range(aPixels//32):
drewp@bigasterisk.com
parents:
diff changeset
427 self.spi.write(self.buf)
drewp@bigasterisk.com
parents:
diff changeset
428 rest = (int(aPixels) % 32)
drewp@bigasterisk.com
parents:
diff changeset
429 if rest > 0:
drewp@bigasterisk.com
parents:
diff changeset
430 buf2 = bytes(self.colorData) * rest
drewp@bigasterisk.com
parents:
diff changeset
431 self.spi.write(buf2)
drewp@bigasterisk.com
parents:
diff changeset
432 self.cs(1)
drewp@bigasterisk.com
parents:
diff changeset
433
drewp@bigasterisk.com
parents:
diff changeset
434 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
435 def _setwindowpoint( self, aPos ) :
drewp@bigasterisk.com
parents:
diff changeset
436 '''Set a single point for drawing a color to.'''
drewp@bigasterisk.com
parents:
diff changeset
437 x = self._offset[0] + int(aPos[0])
drewp@bigasterisk.com
parents:
diff changeset
438 y = self._offset[1] + int(aPos[1])
drewp@bigasterisk.com
parents:
diff changeset
439 self._writecommand(TFT.CASET) #Column address set.
drewp@bigasterisk.com
parents:
diff changeset
440 self.windowLocData[0] = self._offset[0]
drewp@bigasterisk.com
parents:
diff changeset
441 self.windowLocData[1] = x
drewp@bigasterisk.com
parents:
diff changeset
442 self.windowLocData[2] = self._offset[0]
drewp@bigasterisk.com
parents:
diff changeset
443 self.windowLocData[3] = x
drewp@bigasterisk.com
parents:
diff changeset
444 self._writedata(self.windowLocData)
drewp@bigasterisk.com
parents:
diff changeset
445
drewp@bigasterisk.com
parents:
diff changeset
446 self._writecommand(TFT.RASET) #Row address set.
drewp@bigasterisk.com
parents:
diff changeset
447 self.windowLocData[0] = self._offset[1]
drewp@bigasterisk.com
parents:
diff changeset
448 self.windowLocData[1] = y
drewp@bigasterisk.com
parents:
diff changeset
449 self.windowLocData[2] = self._offset[1]
drewp@bigasterisk.com
parents:
diff changeset
450 self.windowLocData[3] = y
drewp@bigasterisk.com
parents:
diff changeset
451 self._writedata(self.windowLocData)
drewp@bigasterisk.com
parents:
diff changeset
452 self._writecommand(TFT.RAMWR) #Write to RAM.
drewp@bigasterisk.com
parents:
diff changeset
453
drewp@bigasterisk.com
parents:
diff changeset
454 # @micropython.native
drewp@bigasterisk.com
parents:
diff changeset
455 def _setwindowloc( self, aPos0, aPos1 ) :
drewp@bigasterisk.com
parents:
diff changeset
456 '''Set a rectangular area for drawing a color to.'''
drewp@bigasterisk.com
parents:
diff changeset
457 self._writecommand(TFT.CASET) #Column address set.
drewp@bigasterisk.com
parents:
diff changeset
458 self.windowLocData[0] = self._offset[0]
drewp@bigasterisk.com
parents:
diff changeset
459 self.windowLocData[1] = self._offset[0] + int(aPos0[0])
drewp@bigasterisk.com
parents:
diff changeset
460 self.windowLocData[2] = self._offset[0]
drewp@bigasterisk.com
parents:
diff changeset
461 self.windowLocData[3] = self._offset[0] + int(aPos1[0])
drewp@bigasterisk.com
parents:
diff changeset
462 self._writedata(self.windowLocData)
drewp@bigasterisk.com
parents:
diff changeset
463
drewp@bigasterisk.com
parents:
diff changeset
464 self._writecommand(TFT.RASET) #Row address set.
drewp@bigasterisk.com
parents:
diff changeset
465 self.windowLocData[0] = self._offset[1]
drewp@bigasterisk.com
parents:
diff changeset
466 self.windowLocData[1] = self._offset[1] + int(aPos0[1])
drewp@bigasterisk.com
parents:
diff changeset
467 self.windowLocData[2] = self._offset[1]
drewp@bigasterisk.com
parents:
diff changeset
468 self.windowLocData[3] = self._offset[1] + int(aPos1[1])
drewp@bigasterisk.com
parents:
diff changeset
469 self._writedata(self.windowLocData)
drewp@bigasterisk.com
parents:
diff changeset
470
drewp@bigasterisk.com
parents:
diff changeset
471 self._writecommand(TFT.RAMWR) #Write to RAM.
drewp@bigasterisk.com
parents:
diff changeset
472
drewp@bigasterisk.com
parents:
diff changeset
473 #@micropython.native
drewp@bigasterisk.com
parents:
diff changeset
474 def _writecommand( self, aCommand ) :
drewp@bigasterisk.com
parents:
diff changeset
475 '''Write given command to the device.'''
drewp@bigasterisk.com
parents:
diff changeset
476 self.dc(0)
drewp@bigasterisk.com
parents:
diff changeset
477 self.cs(0)
drewp@bigasterisk.com
parents:
diff changeset
478 self.spi.write(bytearray([aCommand]))
drewp@bigasterisk.com
parents:
diff changeset
479 self.cs(1)
drewp@bigasterisk.com
parents:
diff changeset
480
drewp@bigasterisk.com
parents:
diff changeset
481 #@micropython.native
drewp@bigasterisk.com
parents:
diff changeset
482 def _writedata( self, aData ) :
drewp@bigasterisk.com
parents:
diff changeset
483 '''Write given data to the device. This may be
drewp@bigasterisk.com
parents:
diff changeset
484 either a single int or a bytearray of values.'''
drewp@bigasterisk.com
parents:
diff changeset
485 self.dc(1)
drewp@bigasterisk.com
parents:
diff changeset
486 self.cs(0)
drewp@bigasterisk.com
parents:
diff changeset
487 self.spi.write(aData)
drewp@bigasterisk.com
parents:
diff changeset
488 self.cs(1)
drewp@bigasterisk.com
parents:
diff changeset
489
drewp@bigasterisk.com
parents:
diff changeset
490 #@micropython.native
drewp@bigasterisk.com
parents:
diff changeset
491 def _pushcolor( self, aColor ) :
drewp@bigasterisk.com
parents:
diff changeset
492 '''Push given color to the device.'''
drewp@bigasterisk.com
parents:
diff changeset
493 self.colorData[0] = aColor >> 8
drewp@bigasterisk.com
parents:
diff changeset
494 self.colorData[1] = aColor
drewp@bigasterisk.com
parents:
diff changeset
495 self._writedata(self.colorData)
drewp@bigasterisk.com
parents:
diff changeset
496
drewp@bigasterisk.com
parents:
diff changeset
497 #@micropython.native
drewp@bigasterisk.com
parents:
diff changeset
498 def _setMADCTL( self ) :
drewp@bigasterisk.com
parents:
diff changeset
499 '''Set screen rotation and RGB/BGR format.'''
drewp@bigasterisk.com
parents:
diff changeset
500 self._writecommand(TFT.MADCTL)
drewp@bigasterisk.com
parents:
diff changeset
501 rgb = TFTRGB if self._rgb else TFTBGR
drewp@bigasterisk.com
parents:
diff changeset
502 self._writedata(bytearray([TFTRotations[self.rotate] | rgb]))
drewp@bigasterisk.com
parents:
diff changeset
503
drewp@bigasterisk.com
parents:
diff changeset
504 #@micropython.native
drewp@bigasterisk.com
parents:
diff changeset
505 def _reset( self ) :
drewp@bigasterisk.com
parents:
diff changeset
506 '''Reset the device.'''
drewp@bigasterisk.com
parents:
diff changeset
507 self.dc(0)
drewp@bigasterisk.com
parents:
diff changeset
508 self.reset(1)
drewp@bigasterisk.com
parents:
diff changeset
509 time.sleep_us(500)
drewp@bigasterisk.com
parents:
diff changeset
510 self.reset(0)
drewp@bigasterisk.com
parents:
diff changeset
511 time.sleep_us(500)
drewp@bigasterisk.com
parents:
diff changeset
512 self.reset(1)
drewp@bigasterisk.com
parents:
diff changeset
513 time.sleep_us(500)
drewp@bigasterisk.com
parents:
diff changeset
514
drewp@bigasterisk.com
parents:
diff changeset
515 def initb( self ) :
drewp@bigasterisk.com
parents:
diff changeset
516 '''Initialize blue tab version.'''
drewp@bigasterisk.com
parents:
diff changeset
517 self._size = (ScreenSize[0] + 2, ScreenSize[1] + 1)
drewp@bigasterisk.com
parents:
diff changeset
518 self._reset()
drewp@bigasterisk.com
parents:
diff changeset
519 self._writecommand(TFT.SWRESET) #Software reset.
drewp@bigasterisk.com
parents:
diff changeset
520 time.sleep_us(50)
drewp@bigasterisk.com
parents:
diff changeset
521 self._writecommand(TFT.SLPOUT) #out of sleep mode.
drewp@bigasterisk.com
parents:
diff changeset
522 time.sleep_us(500)
drewp@bigasterisk.com
parents:
diff changeset
523
drewp@bigasterisk.com
parents:
diff changeset
524 data1 = bytearray(1)
drewp@bigasterisk.com
parents:
diff changeset
525 self._writecommand(TFT.COLMOD) #Set color mode.
drewp@bigasterisk.com
parents:
diff changeset
526 data1[0] = 0x05 #16 bit color.
drewp@bigasterisk.com
parents:
diff changeset
527 self._writedata(data1)
drewp@bigasterisk.com
parents:
diff changeset
528 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
529
drewp@bigasterisk.com
parents:
diff changeset
530 data3 = bytearray([0x00, 0x06, 0x03]) #fastest refresh, 6 lines front, 3 lines back.
drewp@bigasterisk.com
parents:
diff changeset
531 self._writecommand(TFT.FRMCTR1) #Frame rate control.
drewp@bigasterisk.com
parents:
diff changeset
532 self._writedata(data3)
drewp@bigasterisk.com
parents:
diff changeset
533 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
534
drewp@bigasterisk.com
parents:
diff changeset
535 self._writecommand(TFT.MADCTL)
drewp@bigasterisk.com
parents:
diff changeset
536 data1[0] = 0x08 #row address/col address, bottom to top refresh
drewp@bigasterisk.com
parents:
diff changeset
537 self._writedata(data1)
drewp@bigasterisk.com
parents:
diff changeset
538
drewp@bigasterisk.com
parents:
diff changeset
539 data2 = bytearray(2)
drewp@bigasterisk.com
parents:
diff changeset
540 self._writecommand(TFT.DISSET5) #Display settings
drewp@bigasterisk.com
parents:
diff changeset
541 data2[0] = 0x15 #1 clock cycle nonoverlap, 2 cycle gate rise, 3 cycle oscil, equalize
drewp@bigasterisk.com
parents:
diff changeset
542 data2[1] = 0x02 #fix on VTL
drewp@bigasterisk.com
parents:
diff changeset
543 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
544
drewp@bigasterisk.com
parents:
diff changeset
545 self._writecommand(TFT.INVCTR) #Display inversion control
drewp@bigasterisk.com
parents:
diff changeset
546 data1[0] = 0x00 #Line inversion.
drewp@bigasterisk.com
parents:
diff changeset
547 self._writedata(data1)
drewp@bigasterisk.com
parents:
diff changeset
548
drewp@bigasterisk.com
parents:
diff changeset
549 self._writecommand(TFT.PWCTR1) #Power control
drewp@bigasterisk.com
parents:
diff changeset
550 data2[0] = 0x02 #GVDD = 4.7V
drewp@bigasterisk.com
parents:
diff changeset
551 data2[1] = 0x70 #1.0uA
drewp@bigasterisk.com
parents:
diff changeset
552 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
553 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
554
drewp@bigasterisk.com
parents:
diff changeset
555 self._writecommand(TFT.PWCTR2) #Power control
drewp@bigasterisk.com
parents:
diff changeset
556 data1[0] = 0x05 #VGH = 14.7V, VGL = -7.35V
drewp@bigasterisk.com
parents:
diff changeset
557 self._writedata(data1)
drewp@bigasterisk.com
parents:
diff changeset
558
drewp@bigasterisk.com
parents:
diff changeset
559 self._writecommand(TFT.PWCTR3) #Power control
drewp@bigasterisk.com
parents:
diff changeset
560 data2[0] = 0x01 #Opamp current small
drewp@bigasterisk.com
parents:
diff changeset
561 data2[1] = 0x02 #Boost frequency
drewp@bigasterisk.com
parents:
diff changeset
562 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
563
drewp@bigasterisk.com
parents:
diff changeset
564 self._writecommand(TFT.VMCTR1) #Power control
drewp@bigasterisk.com
parents:
diff changeset
565 data2[0] = 0x3C #VCOMH = 4V
drewp@bigasterisk.com
parents:
diff changeset
566 data2[1] = 0x38 #VCOML = -1.1V
drewp@bigasterisk.com
parents:
diff changeset
567 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
568 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
569
drewp@bigasterisk.com
parents:
diff changeset
570 self._writecommand(TFT.PWCTR6) #Power control
drewp@bigasterisk.com
parents:
diff changeset
571 data2[0] = 0x11
drewp@bigasterisk.com
parents:
diff changeset
572 data2[1] = 0x15
drewp@bigasterisk.com
parents:
diff changeset
573 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
574
drewp@bigasterisk.com
parents:
diff changeset
575 #These different values don't seem to make a difference.
drewp@bigasterisk.com
parents:
diff changeset
576 # dataGMCTRP = bytearray([0x0f, 0x1a, 0x0f, 0x18, 0x2f, 0x28, 0x20, 0x22, 0x1f,
drewp@bigasterisk.com
parents:
diff changeset
577 # 0x1b, 0x23, 0x37, 0x00, 0x07, 0x02, 0x10])
drewp@bigasterisk.com
parents:
diff changeset
578 dataGMCTRP = bytearray([0x02, 0x1c, 0x07, 0x12, 0x37, 0x32, 0x29, 0x2d, 0x29,
drewp@bigasterisk.com
parents:
diff changeset
579 0x25, 0x2b, 0x39, 0x00, 0x01, 0x03, 0x10])
drewp@bigasterisk.com
parents:
diff changeset
580 self._writecommand(TFT.GMCTRP1)
drewp@bigasterisk.com
parents:
diff changeset
581 self._writedata(dataGMCTRP)
drewp@bigasterisk.com
parents:
diff changeset
582
drewp@bigasterisk.com
parents:
diff changeset
583 # dataGMCTRN = bytearray([0x0f, 0x1b, 0x0f, 0x17, 0x33, 0x2c, 0x29, 0x2e, 0x30,
drewp@bigasterisk.com
parents:
diff changeset
584 # 0x30, 0x39, 0x3f, 0x00, 0x07, 0x03, 0x10])
drewp@bigasterisk.com
parents:
diff changeset
585 dataGMCTRN = bytearray([0x03, 0x1d, 0x07, 0x06, 0x2e, 0x2c, 0x29, 0x2d, 0x2e,
drewp@bigasterisk.com
parents:
diff changeset
586 0x2e, 0x37, 0x3f, 0x00, 0x00, 0x02, 0x10])
drewp@bigasterisk.com
parents:
diff changeset
587 self._writecommand(TFT.GMCTRN1)
drewp@bigasterisk.com
parents:
diff changeset
588 self._writedata(dataGMCTRN)
drewp@bigasterisk.com
parents:
diff changeset
589 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
590
drewp@bigasterisk.com
parents:
diff changeset
591 self._writecommand(TFT.CASET) #Column address set.
drewp@bigasterisk.com
parents:
diff changeset
592 self.windowLocData[0] = 0x00
drewp@bigasterisk.com
parents:
diff changeset
593 self.windowLocData[1] = 2 #Start at column 2
drewp@bigasterisk.com
parents:
diff changeset
594 self.windowLocData[2] = 0x00
drewp@bigasterisk.com
parents:
diff changeset
595 self.windowLocData[3] = self._size[0] - 1
drewp@bigasterisk.com
parents:
diff changeset
596 self._writedata(self.windowLocData)
drewp@bigasterisk.com
parents:
diff changeset
597
drewp@bigasterisk.com
parents:
diff changeset
598 self._writecommand(TFT.RASET) #Row address set.
drewp@bigasterisk.com
parents:
diff changeset
599 self.windowLocData[1] = 1 #Start at row 2.
drewp@bigasterisk.com
parents:
diff changeset
600 self.windowLocData[3] = self._size[1] - 1
drewp@bigasterisk.com
parents:
diff changeset
601 self._writedata(self.windowLocData)
drewp@bigasterisk.com
parents:
diff changeset
602
drewp@bigasterisk.com
parents:
diff changeset
603 self._writecommand(TFT.NORON) #Normal display on.
drewp@bigasterisk.com
parents:
diff changeset
604 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
605
drewp@bigasterisk.com
parents:
diff changeset
606 self._writecommand(TFT.RAMWR)
drewp@bigasterisk.com
parents:
diff changeset
607 time.sleep_us(500)
drewp@bigasterisk.com
parents:
diff changeset
608
drewp@bigasterisk.com
parents:
diff changeset
609 self._writecommand(TFT.DISPON)
drewp@bigasterisk.com
parents:
diff changeset
610 self.cs(1)
drewp@bigasterisk.com
parents:
diff changeset
611 time.sleep_us(500)
drewp@bigasterisk.com
parents:
diff changeset
612
drewp@bigasterisk.com
parents:
diff changeset
613 def initr( self ) :
drewp@bigasterisk.com
parents:
diff changeset
614 '''Initialize a red tab version.'''
drewp@bigasterisk.com
parents:
diff changeset
615 self._reset()
drewp@bigasterisk.com
parents:
diff changeset
616
drewp@bigasterisk.com
parents:
diff changeset
617 self._writecommand(TFT.SWRESET) #Software reset.
drewp@bigasterisk.com
parents:
diff changeset
618 time.sleep_us(150)
drewp@bigasterisk.com
parents:
diff changeset
619 self._writecommand(TFT.SLPOUT) #out of sleep mode.
drewp@bigasterisk.com
parents:
diff changeset
620 time.sleep_us(500)
drewp@bigasterisk.com
parents:
diff changeset
621
drewp@bigasterisk.com
parents:
diff changeset
622 data3 = bytearray([0x01, 0x2C, 0x2D]) #fastest refresh, 6 lines front, 3 lines back.
drewp@bigasterisk.com
parents:
diff changeset
623 self._writecommand(TFT.FRMCTR1) #Frame rate control.
drewp@bigasterisk.com
parents:
diff changeset
624 self._writedata(data3)
drewp@bigasterisk.com
parents:
diff changeset
625
drewp@bigasterisk.com
parents:
diff changeset
626 self._writecommand(TFT.FRMCTR2) #Frame rate control.
drewp@bigasterisk.com
parents:
diff changeset
627 self._writedata(data3)
drewp@bigasterisk.com
parents:
diff changeset
628
drewp@bigasterisk.com
parents:
diff changeset
629 data6 = bytearray([0x01, 0x2c, 0x2d, 0x01, 0x2c, 0x2d])
drewp@bigasterisk.com
parents:
diff changeset
630 self._writecommand(TFT.FRMCTR3) #Frame rate control.
drewp@bigasterisk.com
parents:
diff changeset
631 self._writedata(data6)
drewp@bigasterisk.com
parents:
diff changeset
632 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
633
drewp@bigasterisk.com
parents:
diff changeset
634 data1 = bytearray(1)
drewp@bigasterisk.com
parents:
diff changeset
635 self._writecommand(TFT.INVCTR) #Display inversion control
drewp@bigasterisk.com
parents:
diff changeset
636 data1[0] = 0x07 #Line inversion.
drewp@bigasterisk.com
parents:
diff changeset
637 self._writedata(data1)
drewp@bigasterisk.com
parents:
diff changeset
638
drewp@bigasterisk.com
parents:
diff changeset
639 self._writecommand(TFT.PWCTR1) #Power control
drewp@bigasterisk.com
parents:
diff changeset
640 data3[0] = 0xA2
drewp@bigasterisk.com
parents:
diff changeset
641 data3[1] = 0x02
drewp@bigasterisk.com
parents:
diff changeset
642 data3[2] = 0x84
drewp@bigasterisk.com
parents:
diff changeset
643 self._writedata(data3)
drewp@bigasterisk.com
parents:
diff changeset
644
drewp@bigasterisk.com
parents:
diff changeset
645 self._writecommand(TFT.PWCTR2) #Power control
drewp@bigasterisk.com
parents:
diff changeset
646 data1[0] = 0xC5 #VGH = 14.7V, VGL = -7.35V
drewp@bigasterisk.com
parents:
diff changeset
647 self._writedata(data1)
drewp@bigasterisk.com
parents:
diff changeset
648
drewp@bigasterisk.com
parents:
diff changeset
649 data2 = bytearray(2)
drewp@bigasterisk.com
parents:
diff changeset
650 self._writecommand(TFT.PWCTR3) #Power control
drewp@bigasterisk.com
parents:
diff changeset
651 data2[0] = 0x0A #Opamp current small
drewp@bigasterisk.com
parents:
diff changeset
652 data2[1] = 0x00 #Boost frequency
drewp@bigasterisk.com
parents:
diff changeset
653 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
654
drewp@bigasterisk.com
parents:
diff changeset
655 self._writecommand(TFT.PWCTR4) #Power control
drewp@bigasterisk.com
parents:
diff changeset
656 data2[0] = 0x8A #Opamp current small
drewp@bigasterisk.com
parents:
diff changeset
657 data2[1] = 0x2A #Boost frequency
drewp@bigasterisk.com
parents:
diff changeset
658 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
659
drewp@bigasterisk.com
parents:
diff changeset
660 self._writecommand(TFT.PWCTR5) #Power control
drewp@bigasterisk.com
parents:
diff changeset
661 data2[0] = 0x8A #Opamp current small
drewp@bigasterisk.com
parents:
diff changeset
662 data2[1] = 0xEE #Boost frequency
drewp@bigasterisk.com
parents:
diff changeset
663 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
664
drewp@bigasterisk.com
parents:
diff changeset
665 self._writecommand(TFT.VMCTR1) #Power control
drewp@bigasterisk.com
parents:
diff changeset
666 data1[0] = 0x0E
drewp@bigasterisk.com
parents:
diff changeset
667 self._writedata(data1)
drewp@bigasterisk.com
parents:
diff changeset
668
drewp@bigasterisk.com
parents:
diff changeset
669 self._writecommand(TFT.INVOFF)
drewp@bigasterisk.com
parents:
diff changeset
670
drewp@bigasterisk.com
parents:
diff changeset
671 self._writecommand(TFT.MADCTL) #Power control
drewp@bigasterisk.com
parents:
diff changeset
672 data1[0] = 0xC8
drewp@bigasterisk.com
parents:
diff changeset
673 self._writedata(data1)
drewp@bigasterisk.com
parents:
diff changeset
674
drewp@bigasterisk.com
parents:
diff changeset
675 self._writecommand(TFT.COLMOD)
drewp@bigasterisk.com
parents:
diff changeset
676 data1[0] = 0x05
drewp@bigasterisk.com
parents:
diff changeset
677 self._writedata(data1)
drewp@bigasterisk.com
parents:
diff changeset
678
drewp@bigasterisk.com
parents:
diff changeset
679 self._writecommand(TFT.CASET) #Column address set.
drewp@bigasterisk.com
parents:
diff changeset
680 self.windowLocData[0] = 0x00
drewp@bigasterisk.com
parents:
diff changeset
681 self.windowLocData[1] = 0x00
drewp@bigasterisk.com
parents:
diff changeset
682 self.windowLocData[2] = 0x00
drewp@bigasterisk.com
parents:
diff changeset
683 self.windowLocData[3] = self._size[0] - 1
drewp@bigasterisk.com
parents:
diff changeset
684 self._writedata(self.windowLocData)
drewp@bigasterisk.com
parents:
diff changeset
685
drewp@bigasterisk.com
parents:
diff changeset
686 self._writecommand(TFT.RASET) #Row address set.
drewp@bigasterisk.com
parents:
diff changeset
687 self.windowLocData[3] = self._size[1] - 1
drewp@bigasterisk.com
parents:
diff changeset
688 self._writedata(self.windowLocData)
drewp@bigasterisk.com
parents:
diff changeset
689
drewp@bigasterisk.com
parents:
diff changeset
690 dataGMCTRP = bytearray([0x0f, 0x1a, 0x0f, 0x18, 0x2f, 0x28, 0x20, 0x22, 0x1f,
drewp@bigasterisk.com
parents:
diff changeset
691 0x1b, 0x23, 0x37, 0x00, 0x07, 0x02, 0x10])
drewp@bigasterisk.com
parents:
diff changeset
692 self._writecommand(TFT.GMCTRP1)
drewp@bigasterisk.com
parents:
diff changeset
693 self._writedata(dataGMCTRP)
drewp@bigasterisk.com
parents:
diff changeset
694
drewp@bigasterisk.com
parents:
diff changeset
695 dataGMCTRN = bytearray([0x0f, 0x1b, 0x0f, 0x17, 0x33, 0x2c, 0x29, 0x2e, 0x30,
drewp@bigasterisk.com
parents:
diff changeset
696 0x30, 0x39, 0x3f, 0x00, 0x07, 0x03, 0x10])
drewp@bigasterisk.com
parents:
diff changeset
697 self._writecommand(TFT.GMCTRN1)
drewp@bigasterisk.com
parents:
diff changeset
698 self._writedata(dataGMCTRN)
drewp@bigasterisk.com
parents:
diff changeset
699 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
700
drewp@bigasterisk.com
parents:
diff changeset
701 self._writecommand(TFT.DISPON)
drewp@bigasterisk.com
parents:
diff changeset
702 time.sleep_us(100)
drewp@bigasterisk.com
parents:
diff changeset
703
drewp@bigasterisk.com
parents:
diff changeset
704 self._writecommand(TFT.NORON) #Normal display on.
drewp@bigasterisk.com
parents:
diff changeset
705 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
706
drewp@bigasterisk.com
parents:
diff changeset
707 self.cs(1)
drewp@bigasterisk.com
parents:
diff changeset
708
drewp@bigasterisk.com
parents:
diff changeset
709 def initb2( self ) :
drewp@bigasterisk.com
parents:
diff changeset
710 '''Initialize another blue tab version.'''
drewp@bigasterisk.com
parents:
diff changeset
711 self._size = (ScreenSize[0] + 2, ScreenSize[1] + 1)
drewp@bigasterisk.com
parents:
diff changeset
712 self._offset[0] = 2
drewp@bigasterisk.com
parents:
diff changeset
713 self._offset[1] = 1
drewp@bigasterisk.com
parents:
diff changeset
714 self._reset()
drewp@bigasterisk.com
parents:
diff changeset
715 self._writecommand(TFT.SWRESET) #Software reset.
drewp@bigasterisk.com
parents:
diff changeset
716 time.sleep_us(50)
drewp@bigasterisk.com
parents:
diff changeset
717 self._writecommand(TFT.SLPOUT) #out of sleep mode.
drewp@bigasterisk.com
parents:
diff changeset
718 time.sleep_us(500)
drewp@bigasterisk.com
parents:
diff changeset
719
drewp@bigasterisk.com
parents:
diff changeset
720 data3 = bytearray([0x01, 0x2C, 0x2D]) #
drewp@bigasterisk.com
parents:
diff changeset
721 self._writecommand(TFT.FRMCTR1) #Frame rate control.
drewp@bigasterisk.com
parents:
diff changeset
722 self._writedata(data3)
drewp@bigasterisk.com
parents:
diff changeset
723 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
724
drewp@bigasterisk.com
parents:
diff changeset
725 self._writecommand(TFT.FRMCTR2) #Frame rate control.
drewp@bigasterisk.com
parents:
diff changeset
726 self._writedata(data3)
drewp@bigasterisk.com
parents:
diff changeset
727 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
728
drewp@bigasterisk.com
parents:
diff changeset
729 self._writecommand(TFT.FRMCTR3) #Frame rate control.
drewp@bigasterisk.com
parents:
diff changeset
730 self._writedata(data3)
drewp@bigasterisk.com
parents:
diff changeset
731 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
732
drewp@bigasterisk.com
parents:
diff changeset
733 self._writecommand(TFT.INVCTR) #Display inversion control
drewp@bigasterisk.com
parents:
diff changeset
734 data1 = bytearray(1) #
drewp@bigasterisk.com
parents:
diff changeset
735 data1[0] = 0x07
drewp@bigasterisk.com
parents:
diff changeset
736 self._writedata(data1)
drewp@bigasterisk.com
parents:
diff changeset
737
drewp@bigasterisk.com
parents:
diff changeset
738 self._writecommand(TFT.PWCTR1) #Power control
drewp@bigasterisk.com
parents:
diff changeset
739 data3[0] = 0xA2 #
drewp@bigasterisk.com
parents:
diff changeset
740 data3[1] = 0x02 #
drewp@bigasterisk.com
parents:
diff changeset
741 data3[2] = 0x84 #
drewp@bigasterisk.com
parents:
diff changeset
742 self._writedata(data3)
drewp@bigasterisk.com
parents:
diff changeset
743 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
744
drewp@bigasterisk.com
parents:
diff changeset
745 self._writecommand(TFT.PWCTR2) #Power control
drewp@bigasterisk.com
parents:
diff changeset
746 data1[0] = 0xC5 #
drewp@bigasterisk.com
parents:
diff changeset
747 self._writedata(data1)
drewp@bigasterisk.com
parents:
diff changeset
748
drewp@bigasterisk.com
parents:
diff changeset
749 self._writecommand(TFT.PWCTR3) #Power control
drewp@bigasterisk.com
parents:
diff changeset
750 data2 = bytearray(2)
drewp@bigasterisk.com
parents:
diff changeset
751 data2[0] = 0x0A #
drewp@bigasterisk.com
parents:
diff changeset
752 data2[1] = 0x00 #
drewp@bigasterisk.com
parents:
diff changeset
753 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
754
drewp@bigasterisk.com
parents:
diff changeset
755 self._writecommand(TFT.PWCTR4) #Power control
drewp@bigasterisk.com
parents:
diff changeset
756 data2[0] = 0x8A #
drewp@bigasterisk.com
parents:
diff changeset
757 data2[1] = 0x2A #
drewp@bigasterisk.com
parents:
diff changeset
758 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
759
drewp@bigasterisk.com
parents:
diff changeset
760 self._writecommand(TFT.PWCTR5) #Power control
drewp@bigasterisk.com
parents:
diff changeset
761 data2[0] = 0x8A #
drewp@bigasterisk.com
parents:
diff changeset
762 data2[1] = 0xEE #
drewp@bigasterisk.com
parents:
diff changeset
763 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
764
drewp@bigasterisk.com
parents:
diff changeset
765 self._writecommand(TFT.VMCTR1) #Power control
drewp@bigasterisk.com
parents:
diff changeset
766 data1[0] = 0x0E #
drewp@bigasterisk.com
parents:
diff changeset
767 self._writedata(data1)
drewp@bigasterisk.com
parents:
diff changeset
768 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
769
drewp@bigasterisk.com
parents:
diff changeset
770 self._writecommand(TFT.MADCTL)
drewp@bigasterisk.com
parents:
diff changeset
771 data1[0] = 0xC8 #row address/col address, bottom to top refresh
drewp@bigasterisk.com
parents:
diff changeset
772 self._writedata(data1)
drewp@bigasterisk.com
parents:
diff changeset
773
drewp@bigasterisk.com
parents:
diff changeset
774 #These different values don't seem to make a difference.
drewp@bigasterisk.com
parents:
diff changeset
775 # dataGMCTRP = bytearray([0x0f, 0x1a, 0x0f, 0x18, 0x2f, 0x28, 0x20, 0x22, 0x1f,
drewp@bigasterisk.com
parents:
diff changeset
776 # 0x1b, 0x23, 0x37, 0x00, 0x07, 0x02, 0x10])
drewp@bigasterisk.com
parents:
diff changeset
777 dataGMCTRP = bytearray([0x02, 0x1c, 0x07, 0x12, 0x37, 0x32, 0x29, 0x2d, 0x29,
drewp@bigasterisk.com
parents:
diff changeset
778 0x25, 0x2b, 0x39, 0x00, 0x01, 0x03, 0x10])
drewp@bigasterisk.com
parents:
diff changeset
779 self._writecommand(TFT.GMCTRP1)
drewp@bigasterisk.com
parents:
diff changeset
780 self._writedata(dataGMCTRP)
drewp@bigasterisk.com
parents:
diff changeset
781
drewp@bigasterisk.com
parents:
diff changeset
782 # dataGMCTRN = bytearray([0x0f, 0x1b, 0x0f, 0x17, 0x33, 0x2c, 0x29, 0x2e, 0x30,
drewp@bigasterisk.com
parents:
diff changeset
783 # 0x30, 0x39, 0x3f, 0x00, 0x07, 0x03, 0x10])
drewp@bigasterisk.com
parents:
diff changeset
784 dataGMCTRN = bytearray([0x03, 0x1d, 0x07, 0x06, 0x2e, 0x2c, 0x29, 0x2d, 0x2e,
drewp@bigasterisk.com
parents:
diff changeset
785 0x2e, 0x37, 0x3f, 0x00, 0x00, 0x02, 0x10])
drewp@bigasterisk.com
parents:
diff changeset
786 self._writecommand(TFT.GMCTRN1)
drewp@bigasterisk.com
parents:
diff changeset
787 self._writedata(dataGMCTRN)
drewp@bigasterisk.com
parents:
diff changeset
788 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
789
drewp@bigasterisk.com
parents:
diff changeset
790 self._writecommand(TFT.CASET) #Column address set.
drewp@bigasterisk.com
parents:
diff changeset
791 self.windowLocData[0] = 0x00
drewp@bigasterisk.com
parents:
diff changeset
792 self.windowLocData[1] = 0x02 #Start at column 2
drewp@bigasterisk.com
parents:
diff changeset
793 self.windowLocData[2] = 0x00
drewp@bigasterisk.com
parents:
diff changeset
794 self.windowLocData[3] = self._size[0] - 1
drewp@bigasterisk.com
parents:
diff changeset
795 self._writedata(self.windowLocData)
drewp@bigasterisk.com
parents:
diff changeset
796
drewp@bigasterisk.com
parents:
diff changeset
797 self._writecommand(TFT.RASET) #Row address set.
drewp@bigasterisk.com
parents:
diff changeset
798 self.windowLocData[1] = 0x01 #Start at row 2.
drewp@bigasterisk.com
parents:
diff changeset
799 self.windowLocData[3] = self._size[1] - 1
drewp@bigasterisk.com
parents:
diff changeset
800 self._writedata(self.windowLocData)
drewp@bigasterisk.com
parents:
diff changeset
801
drewp@bigasterisk.com
parents:
diff changeset
802 data1 = bytearray(1)
drewp@bigasterisk.com
parents:
diff changeset
803 self._writecommand(TFT.COLMOD) #Set color mode.
drewp@bigasterisk.com
parents:
diff changeset
804 data1[0] = 0x05 #16 bit color.
drewp@bigasterisk.com
parents:
diff changeset
805 self._writedata(data1)
drewp@bigasterisk.com
parents:
diff changeset
806 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
807
drewp@bigasterisk.com
parents:
diff changeset
808 self._writecommand(TFT.NORON) #Normal display on.
drewp@bigasterisk.com
parents:
diff changeset
809 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
810
drewp@bigasterisk.com
parents:
diff changeset
811 self._writecommand(TFT.RAMWR)
drewp@bigasterisk.com
parents:
diff changeset
812 time.sleep_us(500)
drewp@bigasterisk.com
parents:
diff changeset
813
drewp@bigasterisk.com
parents:
diff changeset
814 self._writecommand(TFT.DISPON)
drewp@bigasterisk.com
parents:
diff changeset
815 self.cs(1)
drewp@bigasterisk.com
parents:
diff changeset
816 time.sleep_us(500)
drewp@bigasterisk.com
parents:
diff changeset
817
drewp@bigasterisk.com
parents:
diff changeset
818 #@micropython.native
drewp@bigasterisk.com
parents:
diff changeset
819 def initg( self ) :
drewp@bigasterisk.com
parents:
diff changeset
820 '''Initialize a green tab version.'''
drewp@bigasterisk.com
parents:
diff changeset
821 self._reset()
drewp@bigasterisk.com
parents:
diff changeset
822
drewp@bigasterisk.com
parents:
diff changeset
823 self._writecommand(TFT.SWRESET) #Software reset.
drewp@bigasterisk.com
parents:
diff changeset
824 time.sleep_us(150)
drewp@bigasterisk.com
parents:
diff changeset
825 self._writecommand(TFT.SLPOUT) #out of sleep mode.
drewp@bigasterisk.com
parents:
diff changeset
826 time.sleep_us(255)
drewp@bigasterisk.com
parents:
diff changeset
827
drewp@bigasterisk.com
parents:
diff changeset
828 data3 = bytearray([0x01, 0x2C, 0x2D]) #fastest refresh, 6 lines front, 3 lines back.
drewp@bigasterisk.com
parents:
diff changeset
829 self._writecommand(TFT.FRMCTR1) #Frame rate control.
drewp@bigasterisk.com
parents:
diff changeset
830 self._writedata(data3)
drewp@bigasterisk.com
parents:
diff changeset
831
drewp@bigasterisk.com
parents:
diff changeset
832 self._writecommand(TFT.FRMCTR2) #Frame rate control.
drewp@bigasterisk.com
parents:
diff changeset
833 self._writedata(data3)
drewp@bigasterisk.com
parents:
diff changeset
834
drewp@bigasterisk.com
parents:
diff changeset
835 data6 = bytearray([0x01, 0x2c, 0x2d, 0x01, 0x2c, 0x2d])
drewp@bigasterisk.com
parents:
diff changeset
836 self._writecommand(TFT.FRMCTR3) #Frame rate control.
drewp@bigasterisk.com
parents:
diff changeset
837 self._writedata(data6)
drewp@bigasterisk.com
parents:
diff changeset
838 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
839
drewp@bigasterisk.com
parents:
diff changeset
840 self._writecommand(TFT.INVCTR) #Display inversion control
drewp@bigasterisk.com
parents:
diff changeset
841 self._writedata(bytearray([0x07]))
drewp@bigasterisk.com
parents:
diff changeset
842 self._writecommand(TFT.PWCTR1) #Power control
drewp@bigasterisk.com
parents:
diff changeset
843 data3[0] = 0xA2
drewp@bigasterisk.com
parents:
diff changeset
844 data3[1] = 0x02
drewp@bigasterisk.com
parents:
diff changeset
845 data3[2] = 0x84
drewp@bigasterisk.com
parents:
diff changeset
846 self._writedata(data3)
drewp@bigasterisk.com
parents:
diff changeset
847
drewp@bigasterisk.com
parents:
diff changeset
848 self._writecommand(TFT.PWCTR2) #Power control
drewp@bigasterisk.com
parents:
diff changeset
849 self._writedata(bytearray([0xC5]))
drewp@bigasterisk.com
parents:
diff changeset
850
drewp@bigasterisk.com
parents:
diff changeset
851 data2 = bytearray(2)
drewp@bigasterisk.com
parents:
diff changeset
852 self._writecommand(TFT.PWCTR3) #Power control
drewp@bigasterisk.com
parents:
diff changeset
853 data2[0] = 0x0A #Opamp current small
drewp@bigasterisk.com
parents:
diff changeset
854 data2[1] = 0x00 #Boost frequency
drewp@bigasterisk.com
parents:
diff changeset
855 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
856
drewp@bigasterisk.com
parents:
diff changeset
857 self._writecommand(TFT.PWCTR4) #Power control
drewp@bigasterisk.com
parents:
diff changeset
858 data2[0] = 0x8A #Opamp current small
drewp@bigasterisk.com
parents:
diff changeset
859 data2[1] = 0x2A #Boost frequency
drewp@bigasterisk.com
parents:
diff changeset
860 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
861
drewp@bigasterisk.com
parents:
diff changeset
862 self._writecommand(TFT.PWCTR5) #Power control
drewp@bigasterisk.com
parents:
diff changeset
863 data2[0] = 0x8A #Opamp current small
drewp@bigasterisk.com
parents:
diff changeset
864 data2[1] = 0xEE #Boost frequency
drewp@bigasterisk.com
parents:
diff changeset
865 self._writedata(data2)
drewp@bigasterisk.com
parents:
diff changeset
866
drewp@bigasterisk.com
parents:
diff changeset
867 self._writecommand(TFT.VMCTR1) #Power control
drewp@bigasterisk.com
parents:
diff changeset
868 self._writedata(bytearray([0x0E]))
drewp@bigasterisk.com
parents:
diff changeset
869
drewp@bigasterisk.com
parents:
diff changeset
870 self._writecommand(TFT.INVOFF)
drewp@bigasterisk.com
parents:
diff changeset
871
drewp@bigasterisk.com
parents:
diff changeset
872 self._setMADCTL()
drewp@bigasterisk.com
parents:
diff changeset
873
drewp@bigasterisk.com
parents:
diff changeset
874 self._writecommand(TFT.COLMOD)
drewp@bigasterisk.com
parents:
diff changeset
875 self._writedata(bytearray([0x05]))
drewp@bigasterisk.com
parents:
diff changeset
876
drewp@bigasterisk.com
parents:
diff changeset
877 self._writecommand(TFT.CASET) #Column address set.
drewp@bigasterisk.com
parents:
diff changeset
878 self.windowLocData[0] = 0x00
drewp@bigasterisk.com
parents:
diff changeset
879 self.windowLocData[1] = 0x01 #Start at row/column 1.
drewp@bigasterisk.com
parents:
diff changeset
880 self.windowLocData[2] = 0x00
drewp@bigasterisk.com
parents:
diff changeset
881 self.windowLocData[3] = self._size[0] - 1
drewp@bigasterisk.com
parents:
diff changeset
882 self._writedata(self.windowLocData)
drewp@bigasterisk.com
parents:
diff changeset
883
drewp@bigasterisk.com
parents:
diff changeset
884 self._writecommand(TFT.RASET) #Row address set.
drewp@bigasterisk.com
parents:
diff changeset
885 self.windowLocData[3] = self._size[1] - 1
drewp@bigasterisk.com
parents:
diff changeset
886 self._writedata(self.windowLocData)
drewp@bigasterisk.com
parents:
diff changeset
887
drewp@bigasterisk.com
parents:
diff changeset
888 dataGMCTRP = bytearray([0x02, 0x1c, 0x07, 0x12, 0x37, 0x32, 0x29, 0x2d, 0x29,
drewp@bigasterisk.com
parents:
diff changeset
889 0x25, 0x2b, 0x39, 0x00, 0x01, 0x03, 0x10])
drewp@bigasterisk.com
parents:
diff changeset
890 self._writecommand(TFT.GMCTRP1)
drewp@bigasterisk.com
parents:
diff changeset
891 self._writedata(dataGMCTRP)
drewp@bigasterisk.com
parents:
diff changeset
892
drewp@bigasterisk.com
parents:
diff changeset
893 dataGMCTRN = bytearray([0x03, 0x1d, 0x07, 0x06, 0x2e, 0x2c, 0x29, 0x2d, 0x2e,
drewp@bigasterisk.com
parents:
diff changeset
894 0x2e, 0x37, 0x3f, 0x00, 0x00, 0x02, 0x10])
drewp@bigasterisk.com
parents:
diff changeset
895 self._writecommand(TFT.GMCTRN1)
drewp@bigasterisk.com
parents:
diff changeset
896 self._writedata(dataGMCTRN)
drewp@bigasterisk.com
parents:
diff changeset
897
drewp@bigasterisk.com
parents:
diff changeset
898 self._writecommand(TFT.NORON) #Normal display on.
drewp@bigasterisk.com
parents:
diff changeset
899 time.sleep_us(10)
drewp@bigasterisk.com
parents:
diff changeset
900
drewp@bigasterisk.com
parents:
diff changeset
901 self._writecommand(TFT.DISPON)
drewp@bigasterisk.com
parents:
diff changeset
902 time.sleep_us(100)
drewp@bigasterisk.com
parents:
diff changeset
903
drewp@bigasterisk.com
parents:
diff changeset
904 self.cs(1)
drewp@bigasterisk.com
parents:
diff changeset
905
drewp@bigasterisk.com
parents:
diff changeset
906 def maker( ) :
drewp@bigasterisk.com
parents:
diff changeset
907 t = TFT(1, "X1", "X2")
drewp@bigasterisk.com
parents:
diff changeset
908 print("Initializing")
drewp@bigasterisk.com
parents:
diff changeset
909 t.initr()
drewp@bigasterisk.com
parents:
diff changeset
910 t.fill(0)
drewp@bigasterisk.com
parents:
diff changeset
911 return t
drewp@bigasterisk.com
parents:
diff changeset
912
drewp@bigasterisk.com
parents:
diff changeset
913 def makeb( ) :
drewp@bigasterisk.com
parents:
diff changeset
914 t = TFT(1, "X1", "X2")
drewp@bigasterisk.com
parents:
diff changeset
915 print("Initializing")
drewp@bigasterisk.com
parents:
diff changeset
916 t.initb()
drewp@bigasterisk.com
parents:
diff changeset
917 t.fill(0)
drewp@bigasterisk.com
parents:
diff changeset
918 return t
drewp@bigasterisk.com
parents:
diff changeset
919
drewp@bigasterisk.com
parents:
diff changeset
920 def makeg( ) :
drewp@bigasterisk.com
parents:
diff changeset
921 t = TFT(1, "X1", "X2")
drewp@bigasterisk.com
parents:
diff changeset
922 print("Initializing")
drewp@bigasterisk.com
parents:
diff changeset
923 t.initg()
drewp@bigasterisk.com
parents:
diff changeset
924 t.fill(0)
drewp@bigasterisk.com
parents:
diff changeset
925 return t