http://www.multiwingspan.co.uk/micro.php?page=touchphat
代码: 全选
from microbit import *
class touchphat:
def __init__(self):
self.SENINPUTSTATUS = 0x03
self.LEDLINK = 0x72
self.LEDSTATUS = 0x74
self.STANDBYCFG = 0x41
self.ADDRESS = 0x2C
self.LEDTRACK = False
self.write_reg(self.LEDLINK,0x00)
sleep(1)
self.write_reg(self.STANDBYCFG,0x30)
sleep(1)
def write_reg(self,reg,value):
i2c.write(self.ADDRESS, bytes([reg,value]), repeat=False)
def read_pads(self):
self.write_reg(0,0)
i2c.write(self.ADDRESS, bytes([self.SENINPUTSTATUS]), repeat=False)
data = i2c.read(self.ADDRESS,1,repeat=False)
if self.LEDTRACK:
pattern = sum(1<<(5-i) for i in range(6) if data[0]>>i&1)
i2c.write(self.ADDRESS, bytes([self.LEDSTATUS]), repeat=False)
led_state = i2c.read(self.ADDRESS,1,repeat=False)
if pattern != led_state[0]:
self.set_leds(pattern)
return data[0]
def read_pads_list(self):
pattern = self.read_pads()
bits = [pattern >> i & 1 for i in range(5,-1,-1)]
return list(reversed(bits))
def set_led_tracking(self, led_follow):
self.LEDTRACK = led_follow
def set_leds(self, led_byte):
self.write_reg(self.LEDSTATUS,led_byte)
tphat = touchphat()
tphat.set_led_tracking(True)
while True:
a = tphat.read_pads_list()
display.clear()
if a[0]==1: display.set_pixel(0,0,9)
if a[1]==1: display.set_pixel(0,4,9)
if a[2]==1: display.set_pixel(1,4,9)
if a[3]==1: display.set_pixel(2,4,9)
if a[4]==1: display.set_pixel(3,4,9)
if a[5]==1: display.set_pixel(4,0,9)