示例#1
0
        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()