触摸按键扩展板 Touch pHAT

micro:bit编程、教学、展示
STEM
回复
头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

触摸按键扩展板 Touch pHAT

#1

帖子 shaoziyang »

microbit的触摸按键扩展板 Touch pHAT
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)
 

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章