xpt2046
This commit is contained in:
parent
5448753621
commit
7f17d04546
@ -16,12 +16,12 @@ def callback(position):
|
|||||||
print('(x,y)', position)
|
print('(x,y)', position)
|
||||||
|
|
||||||
touch = XPT2046(320, 480, 17, callback, 7)
|
touch = XPT2046(320, 480, 17, callback, 7)
|
||||||
touch.correction = {
|
# touch.correction = {
|
||||||
'x': -3394,#364,
|
# 'x': 1,#3394,#364,
|
||||||
'y': -3350,#430,
|
# 'y': 1,#3350,#430,
|
||||||
'ratio_x': 1,
|
# 'ratio_x': 1,
|
||||||
'ratio_y': 1
|
# 'ratio_y': 1
|
||||||
}
|
# }
|
||||||
touch.init()
|
touch.init()
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
@ -4,18 +4,23 @@ import time
|
|||||||
sys.path.append("../../")
|
sys.path.append("../../")
|
||||||
from gfxlcd.driver.ili9325.gpio import GPIO as ILIGPIO
|
from gfxlcd.driver.ili9325.gpio import GPIO as ILIGPIO
|
||||||
from gfxlcd.driver.ili9325.ili9325 import ILI9325
|
from gfxlcd.driver.ili9325.ili9325 import ILI9325
|
||||||
|
from gfxlcd.driver.xpt2046.xpt2046 import XPT2046
|
||||||
from gfxlcd.driver.ad7843.ad7843 import AD7843
|
from gfxlcd.driver.ad7843.ad7843 import AD7843
|
||||||
|
from gfxlcd.driver.ili9486.spi import SPI
|
||||||
|
from gfxlcd.driver.ili9486.ili9486 import ILI9486
|
||||||
RPi.GPIO.setmode(RPi.GPIO.BCM)
|
RPi.GPIO.setmode(RPi.GPIO.BCM)
|
||||||
|
|
||||||
|
|
||||||
lcd_tft = ILI9325(240, 320, ILIGPIO())
|
# lcd_tft = ILI9325(240, 320, ILIGPIO())
|
||||||
|
# lcd_tft.init()
|
||||||
|
lcd_tft = ILI9486(320, 480, SPI())
|
||||||
lcd_tft.init()
|
lcd_tft.init()
|
||||||
|
|
||||||
|
|
||||||
def callback(position):
|
def callback(position):
|
||||||
print('(x,y)', position)
|
print('(x,y)', position)
|
||||||
|
|
||||||
touch = AD7843(240, 320)
|
#touch = AD7843(240, 320)
|
||||||
|
touch = XPT2046(320, 480)
|
||||||
|
|
||||||
touch.init()
|
touch.init()
|
||||||
|
|
||||||
|
@ -12,10 +12,10 @@ class XPT2046(object):
|
|||||||
self.spi.max_speed_hz = speed
|
self.spi.max_speed_hz = speed
|
||||||
self.spi.mode = 0
|
self.spi.mode = 0
|
||||||
self.correction = {
|
self.correction = {
|
||||||
'x': 364,
|
'x': 540,
|
||||||
'y': 430,
|
'y': 50,
|
||||||
'ratio_x': 14.35,
|
'ratio_x': 0.94, #14.35,
|
||||||
'ratio_y': 10.59
|
'ratio_y': 1.26, #10.59
|
||||||
}
|
}
|
||||||
self.cs_pin = cs_pin
|
self.cs_pin = cs_pin
|
||||||
self.int_pin = int_pin
|
self.int_pin = int_pin
|
||||||
@ -43,7 +43,6 @@ class XPT2046(object):
|
|||||||
|
|
||||||
def _interrupt(self, channel):
|
def _interrupt(self, channel):
|
||||||
"""call users callback"""
|
"""call users callback"""
|
||||||
print('bb')
|
|
||||||
self.callback(self.get_position())
|
self.callback(self.get_position())
|
||||||
|
|
||||||
def get_position(self):
|
def get_position(self):
|
||||||
@ -53,24 +52,30 @@ class XPT2046(object):
|
|||||||
while len(buffer) < 20 and fuse > 0:
|
while len(buffer) < 20 and fuse > 0:
|
||||||
if self.cs_pin:
|
if self.cs_pin:
|
||||||
RPi.GPIO.output(self.cs_pin, 0)
|
RPi.GPIO.output(self.cs_pin, 0)
|
||||||
self.spi.xfer2([0xd0])
|
|
||||||
recvx = self.spi.readbytes(2)
|
self.spi.xfer2([0x80 | 0x08 | 0x30])
|
||||||
self.spi.xfer2([0x90])
|
recv = self.spi.readbytes(1)
|
||||||
recvy = self.spi.readbytes(2)
|
tc_rz = recv[0] & 0x7f
|
||||||
|
|
||||||
|
self.spi.xfer2([0x80 | 0x08 | 0x40])
|
||||||
|
recv = self.spi.readbytes(1)
|
||||||
|
tc_rz += (255-recv[0] & 0x7f)
|
||||||
|
|
||||||
|
self.spi.xfer2([0x80 | 0x10])
|
||||||
|
recv = self.spi.readbytes(2)
|
||||||
|
tc_rx = 1023-((recv[0] << 2)|(recv[1] >> 6))
|
||||||
|
|
||||||
|
self.spi.xfer2([0x80 | 0x50])
|
||||||
|
recv = self.spi.readbytes(2)
|
||||||
|
tc_ry = ((recv[0] << 2)|(recv[1] >> 6))
|
||||||
|
|
||||||
if self.cs_pin:
|
if self.cs_pin:
|
||||||
RPi.GPIO.output(self.cs_pin, 1)
|
RPi.GPIO.output(self.cs_pin, 1)
|
||||||
tc_rx = recvx[0] << 5
|
if tc_rz > 10:
|
||||||
tc_rx |= recvx[1] >> 3
|
pos_x = self.get_x(tc_rx)
|
||||||
|
pos_y = self.get_y(tc_ry)
|
||||||
tc_ry = recvy[0] << 5
|
if 0 <= pos_x <= self.width and 0 <= pos_y <= self.height:
|
||||||
tc_ry |= recvy[1] >> 3
|
buffer.append((pos_x, pos_y))
|
||||||
|
|
||||||
pos_x = self.get_x(tc_rx)
|
|
||||||
pos_y = self.get_y(tc_ry)
|
|
||||||
print(pos_x, pos_y)
|
|
||||||
if 0 <= pos_x <= self.width and 0 <= pos_y <= self.height:
|
|
||||||
buffer.append((pos_x, pos_y))
|
|
||||||
fuse -= 1
|
fuse -= 1
|
||||||
|
|
||||||
return self._calculate_avr(buffer)
|
return self._calculate_avr(buffer)
|
||||||
|
Loading…
Reference in New Issue
Block a user