From 1271627b32fd98962d740678689bd73cf445b18b Mon Sep 17 00:00:00 2001 From: "michael.divia" <michael.divia@etu.hesge.ch> Date: Fri, 28 Jun 2024 12:00:15 +0200 Subject: [PATCH] DocString Touch+Screen --- 1 - Code/hl3.py | 72 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/1 - Code/hl3.py b/1 - Code/hl3.py index 8bab55d..771fa4c 100644 --- a/1 - Code/hl3.py +++ b/1 - Code/hl3.py @@ -562,21 +562,40 @@ class Touch: @classmethod def attach(cls, cb): + """_summary_ + + Args: + cb (function): _description_ + """ cls.callback = cb - + @classmethod def detach(cls): + """_summary_ + """ cls.callback = None @classmethod def callback_do(cls, *args, **kwargs): + """_summary_ + """ if cls.callback: cls.callback(*args, **kwargs) def init(): + """_summary_ + """ i2c.writeto_mem(0x38, 0xa4, b'\x00') def read(pos): + """_summary_ + + Args: + pos (_type_): _description_ + + Returns: + _type_: _description_ + """ buf = i2c.readfrom_mem(0x38, 0x03, 4) flag = buf[0] >> 6 x = ((buf[0] & 0x0f) << 8) | (buf[1] & 0xff) @@ -604,6 +623,15 @@ class Touch: return False def compute_pos(x, y): + """_summary_ + + Args: + x (_type_): _description_ + y (_type_): _description_ + + Returns: + _type_: _description_ + """ if x < 120 and y < 160: return Position.SOUTH_EAST elif x >= 120 and y < 160: @@ -612,14 +640,24 @@ class Touch: return Position.NORTH_EAST elif x >= 120 and y >= 160: return Position.NORTH_WEST - + def read_pos(): + """_summary_ + + Returns: + _type_: _description_ + """ buf = i2c.readfrom_mem(0x38, 0x03, 4) x = ((buf[0] & 0x0f) << 8) | (buf[1] & 0xff) y = ((buf[2] & 0x0f) << 8) | (buf[3] & 0xff) return x, y def touch_cb(pos): + """_summary_ + + Args: + pos (_type_): _description_ + """ if pos == Position.NORTH_WEST: Matrix.clear(0) for i in range(4): @@ -642,6 +680,8 @@ class Touch: Matrix.set_led(i + 4, j + 4, Color.BLUE) def handler(): + """_summary_ + """ x, y = Touch.read_pos() pos = Touch.compute_pos(x, y) Touch.callback_do(pos) @@ -649,14 +689,26 @@ class Touch: class Lcd: def write_cmd(cmd): + """_summary_ + + Args: + cmd (_type_): _description_ + """ p26.off() spi.write(cmd) def write_data(data): + """_summary_ + + Args: + data (_type_): _description_ + """ p26.on() spi.write(data) def init(): + """_summary_ + """ Lcd.write_cmd(b'\x01') time.sleep_ms(5) @@ -771,6 +823,14 @@ class Lcd: time.sleep_ms(50) def set_window(x, y, width, height): + """_summary_ + + Args: + x (_type_): _description_ + y (_type_): _description_ + width (_type_): _description_ + height (_type_): _description_ + """ Lcd.write_cmd(b'\x2a'); Lcd.write_data(((x >> 8) & 0xff).to_bytes(1, 'big')); Lcd.write_data((x & 0xff).to_bytes(1, 'big')); @@ -784,6 +844,8 @@ class Lcd: Lcd.write_data(((y + height - 1) & 0xff).to_bytes(1, 'big')); def touch_test(): + """_summary_ + """ if Touch.read(Position.NORTH_WEST): print("Touch north west") elif Touch.read(Position.NORTH_EAST): @@ -794,11 +856,15 @@ def touch_test(): print("Touch south east") def touch_irq_test(): + """_summary_ + """ p4.irq(lambda pin: Touch.handler(), Pin.IRQ_FALLING) Touch.attach(Touch.touch_cb) Touch.init() def lcd_test(): + """_summary_ + """ p22.on() cs(0) utime.sleep(1) @@ -833,6 +899,8 @@ def lcd_test(): Lcd.write_data(b'\x1f') def accel_test(): + """_summary_ + """ if Accel.tilting(Direction.NORTH): print('Tilting North !') if Accel.tilting(Direction.SOUTH): -- GitLab