def begin(arduino: ArduinoUniversal): #arduino.ang.alpha(0.9) #arduino.rot.alpha(0.2) #arduino.ang.stop() #arduino.rad.stop() root = BaseTkContainer() tksupport.install(root.tk_instance) vlc_instance: vlc.Instance = vlc.Instance() print(vlc_instance.audio_output_enumerate_devices()) main_scene = MainScene(root.tk_instance, "1920x1080+0+0", vlc_instance) #main_scene = MainScene(root.tk_instance, "500x509+0+0", vlc_instance) arduino.outs.allOff() arduino.outs.allFad(5) step = 0.02 def fade(dt: int, from_b: float, to_b: float): current_brightness = from_b brightness_k = (to_b - from_b) / dt def setLedBrightness(): nonlocal current_brightness, brightness_k current_brightness += step * brightness_k if (current_brightness < to_b + step) and ( current_brightness > to_b - step): current_brightness = to_b fade_looper.stop() arduino.outs.allSet(int(round(current_brightness * 255))) fade_looper = LoopingCall(setLedBrightness) fade_looper.start(step) #fade(1,0,1) def transition_to_main(num: int, led_name: str, from_scene: Scene, *vargs, **kwargs): main_scene.start_video(num) #[scene.activate() for scene in scenes] #from_scene.deactivate() arduino.outs.allFad(0) arduino.outs.allOff() arduino.outs.setFad(led_name + ",7") #arduino.outs.on(led_name) def to_main(num: int, led_name: str, from_scene: Scene, *vargs, **kwargs) -> Callable: return partial(transition_to_main, num, led_name, from_scene, *vargs, **kwargs) def setupTrigger(name: str, num: int, led_name: str, on_what: str = "event"): trg = Trigger(name, arduino) trg.add_listener(on_what, to_main(num, led_name, trg)) return trg scenes = [] scenes.append(setupTrigger("shl", 1, "shl")) scenes.append(setupTrigger("vkl", 2, "vkl")) scenes.append(setupTrigger("bor", 3, "bo")) scenes.append(setupTrigger("alb", 4, "alb", "1")) scenes.append(setupTrigger("bin", 5, "bin")) naidenov = VolumeNaidenov() naidenov.on_volume(to_main(6, "vol", naidenov)) arduino.on_vol(naidenov.dynamic_rotation) scenes.append(naidenov) ringer = Ringer() ringer.on_ring_end(to_main(7, "rin", ringer)) arduino.on_rin(ringer.button) scenes.append(ringer) scenes.append(setupTrigger("box", 8, "box", "1")) radio = Radio() arduino.on_rad(radio.set_frequency) radio.on_death(to_main(9, "rad", radio)) scenes.append(radio) scenes.append(setupTrigger("tel", 10, "tel", "1")) scenes.append(setupTrigger("fot", 11, "fot", "0")) scenes.append(setupTrigger("kom", 12, "kom")) scenes.append(setupTrigger("lif", 13, "lif", "1")) scenes.append(setupTrigger("fan", 14, "fan", "1")) golubeva = ScreenGolubeva() golubeva.on_sign(to_main(15, "sig", golubeva)) scenes.append(golubeva) [scene.activate() for scene in scenes] def switch_all_off(*args, **kwargs): [scene.deactivate() for scene in scenes] def switch_all_on(*args, **kwargs): [scene.activate() for scene in scenes] arduino.outs.allFad(5) main_scene.on_started_video(switch_all_off) main_scene.on_started_titles(switch_all_on) def on_press(key): if key == keyboard.Key.space: main_scene.stop_video() listener = keyboard.Listener(on_press=on_press) listener.start()