Skip to content

Commit 4422649

Browse files
committed
Save calibration data in settings.toml
1 parent 0558107 commit 4422649

4 files changed

Lines changed: 48 additions & 16 deletions

File tree

calibrate.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from pydos_ui import Pydos_ui
2+
Pydos_ui.calibrate()

demo.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import time
3434
import busio
3535
import board
36-
import adafruit_focaltouch
36+
#import adafruit_focaltouch
3737
import displayio
3838
import dotclockframebuffer
3939
import framebufferio
@@ -53,7 +53,7 @@
5353

5454

5555
#ft = adafruit_focaltouch.Adafruit_FocalTouch(i2c, debug=False)
56-
ft = Pydos_ui.ft
56+
ft = Pydos_ui.ts
5757

5858
displayio.release_displays()
5959

@@ -96,7 +96,7 @@
9696
# bounce_buffer_size_px = 1000 * 15, # 15000
9797
# )
9898

99-
fb=dotclockframebuffer.DotClockFramebuffer(**board.TFT,**board.TIMINGS800)
99+
fb=dotclockframebuffer.DotClockFramebuffer(**board.TFT_PINS,**board.TFT_TIMINGS)
100100

101101

102102
print('Creating DotClockFrameBuffer Display.')
@@ -113,8 +113,8 @@
113113

114114
box_size=50
115115
corner_box_size=20
116-
width=800
117-
height=480
116+
width=display.width
117+
height=display.height
118118

119119
color_count=0
120120

lib/gt911_touch.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@
4949

5050
_GT_COMMAND = const(0x8040)
5151

52-
5352
_GT_REG_STATUS = const(0x814E)
5453
_GT_POINT1_COORD = const(0x814F)
5554
_GT_REG_PRODID_1 = const(0x8140)
@@ -138,9 +137,11 @@ def touched(self) -> int:
138137
curr_touch = self._read_last_touch()
139138
if self._last_touch != curr_touch:
140139
self._last_touch = curr_touch
141-
""" If this extra call to _read_last_touch()
140+
"""
141+
If this extra call to _read_last_touch()
142142
isn't made then the next touch is missed ?????
143-
I have no idea why """
143+
I have no idea why
144+
"""
144145
self._read_last_touch()
145146
return 1
146147
else:
@@ -149,7 +150,7 @@ def touched(self) -> int:
149150
def _read_last_touch(self):
150151
self._write(_GT_REG_STATUS,[0])
151152
test = self._read(_GT_REG_STATUS,1)[0]
152-
timeout = 1000
153+
timeout = 250
153154
while not (test & 0x80) and (timeout := timeout-1) > 0:
154155
if test == 0:
155156
break
@@ -235,7 +236,7 @@ def _read(self, register, length, irq_pin=None) -> bytearray:
235236

236237
i2c.write(bytes([((register & 0xFF00) >> 8),(register & 0xFF)]))
237238
result = bytearray(length)
238-
time.sleep(.1)
239+
time.sleep(.06)
239240

240241
i2c.readinto(result)
241242
if self._debug:

lib/pydos_ui_virt.py

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from sys import stdin,stdout,implementation
2+
from os import getenv
23

34
import board
45
import displayio
@@ -83,22 +84,29 @@ def __init__(self):
8384

8485
self._touched = False
8586

86-
self._row1Keys = [665,615,565,515,465,415,365,315,265,215,165,115,68,0]
87+
self._row1Keys = [665,615,565,515,465,415,365,315,265,215,165,115,68,-99999]
8788
self._row1Letters = ['\x08','=','-','0','9','8','7','6','5','4','3','2','1','`']
8889
self._row1Uppers = ['\x08','+','_',')','(','*','&','^','%','$','#','@','!','~']
89-
self._row2Keys = [695,645,595,545,495,445,395,345,295,245,195,145,95,0]
90+
self._row2Keys = [695,645,595,545,495,445,395,345,295,245,195,145,95,-99999]
9091
self._row2Letters = ['\\',']','[','p','o','i','u','y','t','r','e','w','q','\x09']
9192
self._row2Uppers = ['|','}','{']
92-
self._row3Keys = [650,600,550,500,450,400,350,300,250,200,150,100,0]
93+
self._row3Keys = [650,600,550,500,450,400,350,300,250,200,150,100,-99999]
9394
self._row3Letters = ['\n',"'",';','l','k','j','h','g','f','d','s',"a",'C']
9495
self._row3Uppers = ['\n','"',':']
95-
self._row4Keys = [635,585,535,485,435,385,335,285,235,185,135,0]
96+
self._row4Keys = [635,585,535,485,435,385,335,285,235,185,135,-99999]
9697
self._row4Letters = ['S','/','.',',','m','n','b','v','c','x','z','S']
9798
self._row4Uppers = ['S','?','>','<']
98-
self._row5Keys = [710,520,220,125,0]
99+
self._row5Keys = [710,520,220,125,-99999]
99100
self._row5Letters = ['X','',' ','','\x1b']
100101

101-
ts_calib = self.calibrate()
102+
ts_calib = getenv('PYDOS_TS_CALIB')
103+
try:
104+
ts_calib = eval(ts_calib)
105+
self._calibrated = True
106+
except:
107+
ts_calib = self.calibrate()
108+
if len(ts_calib) != 4:
109+
ts_calib = self.calibrate()
102110
self._calibXfact = self._display.width/(ts_calib[2]-ts_calib[0]+1)
103111
self._calibXadj = ts_calib[0]
104112
self._calibYfact = self._display.height/(ts_calib[3]-ts_calib[1]+1)
@@ -181,6 +189,27 @@ def calibrate(self):
181189
largest_X += 5
182190
largest_Y += 5
183191

192+
envline = {}
193+
defaults = True
194+
try:
195+
envfile = open('/settings.toml')
196+
except:
197+
defaults = False
198+
199+
if defaults:
200+
for line in envfile:
201+
try:
202+
envline[line.split('=')[0].strip()] = line.split('=')[1].strip()
203+
except:
204+
pass
205+
envfile.close()
206+
207+
with open('/settings.toml','w') as envfile:
208+
for param in envline:
209+
if param != 'PYDOS_TS_CALIB':
210+
envfile.write(param+"="+envline.get(param,"")+"\n")
211+
envfile.write('PYDOS_TS_CALIB="(%s,%s,%s,%s)"'%(smallest_X,smallest_Y,largest_X,largest_Y))
212+
184213
self._display.root_group=displayio.CIRCUITPYTHON_TERMINAL
185214
self._calibrated = True
186215
print("Screen Calibrated: (%s,%s) (%s,%s)" % (smallest_X,smallest_Y,largest_X,largest_Y))

0 commit comments

Comments
 (0)