def play(self, length, display_controller): if len(self.sequence) == 0: print("No sequence loaded! Cancel play") return if is_running_on_pi == False: return if display_controller is None: display_controller = DisplayController() self.strip.begin() self.start_time = time.time() end_time = length + self.start_time black = ImageLoader.black() # angle_offset_pixels = (int) (PHYSICAL_ANGLE_OFFSET * 360.0 / PIXELS_IN_CIRCLE) # print "offsting image by " + str(angle_offset_pixels) print("playing sequence for ", length, "seconds") current_image = self.sequence[0] counter = 0 last_switch = time.time() diff = 0 if is_running_on_pi: while end_time > display_controller.last_update: diff = diff + time.time() - last_switch last_switch = time.time() current_image = self.get_frame() display_controller.update() angle = display_controller.estimate_angle() self.strip.show(current_image.get_sample_by_angle(angle)) time.sleep(0.0001) else: while end_time > timing["last_update"]: timing["last_update"] = time.time() self.stop()
def stop(self): self.strip.show(ImageLoader.black()) self.strip.close()