From b9557be16ca7bdc600c33a0ffdc33d37dc7498c8 Mon Sep 17 00:00:00 2001 From: n07070 Date: Wed, 20 Dec 2023 11:47:56 +0100 Subject: [PATCH] Fix formatting, add some classes --- __init__.py | 77 ++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 62 insertions(+), 15 deletions(-) diff --git a/__init__.py b/__init__.py index 4f93ddd..66e5b5b 100644 --- a/__init__.py +++ b/__init__.py @@ -9,12 +9,39 @@ import captouch import json import math +# class Bluetooth(): +# def __init__(self) -> None: + + +# class Social(): +# def +class Movements: + def orientation(self) -> int: + # Get current orientation + return 0 + + def update(self) -> None: + # Read from the gyroscope and accelerometers + print("Updating movements") + + def last_movement(self) -> int: + # Time since last movement + return 1 + + def is_moving(self) -> bool: + # Is the badge currently in movement + return False + + def is_shaking(self) -> bool: + # Active when the badge has been shaked + return False + class Configuration: def __init__(self) -> None: # Add up to 5 items with custom header - self.hdrs: list = ['name', 'handel', 'lang', 'pronouns', 'empty'] - self.strs: list = ['flow3r', '', 'noLang', '', ''] + self.hdrs: list = ["name", "handel", "lang", "pronouns", "phone"] + self.strs: list = ["flow3r", "", "noLang", "", ""] self.size: int = 75 self.font: int = 5 self.colour: int = (1.0, 1.0, 1.0) @@ -23,7 +50,7 @@ class Configuration: @classmethod def load(cls, path: str) -> "Configuration": res = cls() - #return res # for debug + # return res # for debug try: with open(path) as f: jsondata = f.read() @@ -43,16 +70,26 @@ class Configuration: res.size = data["size"] if "font" in data and type(data["font"]) == int: res.font = data["font"] - if "color" in data and type(data["color"]) == str and len(data["color"]) == 7 and data["color"][0] == '#': + if ( + "color" in data + and type(data["color"]) == str + and len(data["color"]) == 7 + and data["color"][0] == "#" + ): res.colour = ( - int(data["color"][1:3], 16)/256.0, - int(data["color"][3:5], 16)/256.0, - int(data["color"][5:], 16)/256.0 + int(data["color"][1:3], 16) / 256.0, + int(data["color"][3:5], 16) / 256.0, + int(data["color"][5:], 16) / 256.0, ) return res def save(self, path: str) -> None: - colourstr: str = '#' + hex(int(255*self.colour[0]))[2:4] + hex(int(255*self.colour[1]))[2:4] + hex(int(255*self.colour[2]))[2:4] + colourstr: str = ( + "#" + + hex(int(255 * self.colour[0]))[2:4] + + hex(int(255 * self.colour[1]))[2:4] + + hex(int(255 * self.colour[2]))[2:4] + ) d = { "size": self.size, "font": self.font, @@ -67,7 +104,7 @@ class Configuration: f.close() -class SensibleNickApp(Application): +class BetterNickApp(Application): state: int = 0 since_state_change: int = 0 @@ -86,11 +123,16 @@ class SensibleNickApp(Application): self._colours: list = [GO_GREEN, PUSH_RED, self._config.colour] self._en_colour = 2 self.varprint: list(str) = [str for str in self._config.strs if len(str) > 0] + self.movement_state = Movements() def draw(self, ctx: Context) -> None: + if not self.movement_state.is_moving(): + ctx.rgb(*BLACK).rectangle(-120, -120, 240, 240).fill() + return + ctx.text_align = ctx.CENTER ctx.text_baseline = ctx.MIDDLE - #ctx.font_size = self._config.size + # ctx.font_size = self._config.size ctx.font = ctx.get_font_name(self._config.font) ctx.rgb(*BLACK).rectangle(-120, -120, 240, 240).fill() @@ -103,7 +145,7 @@ class SensibleNickApp(Application): ctx.scale(self._scale, 1) ctx.font_size = 100 pre = ctx.text_width(self.varprint[self.state]) - ctx.font_size = 98*240/pre + ctx.font_size = 98 * 240 / pre if ctx.font_size > 150: ctx.font_size = 150 post = ctx.text_width(self.varprint[self.state]) @@ -114,7 +156,7 @@ class SensibleNickApp(Application): leds.set_hsv(int(self._led), abs(self._scale) * 360, 1, 1.0) leds.update() - #ctx.fill() + # ctx.fill() def on_exit(self) -> None: self._config.save(self._filename) @@ -122,6 +164,10 @@ class SensibleNickApp(Application): def think(self, ins: InputState, delta_ms: int) -> None: super().think(ins, delta_ms) + self.movement_state.update() + + self.ins.imu + self._phase += delta_ms / 900 self._scale = math.sin(self._phase) self._led += delta_ms / 100 @@ -137,12 +183,12 @@ class SensibleNickApp(Application): petals = captouch.read().petals for i in range(5): - if petals[2*i].pressed and i < len(self.varprint): + if petals[2 * i].pressed and i < len(self.varprint): self.state = i self.since_state_change = 0 for i in range(3): - if petals[2*i+3].pressed: + if petals[2 * i + 3].pressed: self._en_colour = i if petals[1].pressed: @@ -159,8 +205,9 @@ class SensibleNickApp(Application): self._en_iter_pressed = petals[1].pressed self._en_scale_pressed = petals[9].pressed + # For running with `mpremote run`: if __name__ == "__main__": import st3m.run - st3m.run.run_view(SensibleNickApp(ApplicationContext())) + st3m.run.run_view(BetterNickApp(ApplicationContext()))