parent
							
								
									6edc15e4af
								
							
						
					
					
						commit
						8750b4d9f0
					
				
				 1 changed files with 63 additions and 0 deletions
			
			
		@ -0,0 +1,63 @@ | 
				
			|||||||
 | 
					#!/usr/bin/env python3 | 
				
			||||||
 | 
					# MegaMix | 
				
			||||||
 | 
					# Mis m6tted tulevad kui kuuled "MegaMix"? | 
				
			||||||
 | 
					# m6tlen et millal jooma saaks hakata | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from lib.Program import Program | 
				
			||||||
 | 
					import time | 
				
			||||||
 | 
					import random | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def name(): | 
				
			||||||
 | 
					    return 'MegaMix' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MegaMix(Program): | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    preset_colors = ["ffa500", "e56717", "e18b6b", "c36241", "ed9121", "f5deb3", "c35817", "ff8400", "efb261", | 
				
			||||||
 | 
					                     "c78023", "cc6600", "e66c2c", "ff8040", "ff7f50", "ffc594", "f88158", "e67451", "fc7f03", | 
				
			||||||
 | 
					                     "deaa88", "f87217", "db4200", "ff7e75"] | 
				
			||||||
 | 
					    current_colors = [] | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # from https://chase-seibert.github.io/blog/2011/07/29/python-calculate-lighterdarker-rgb-colors.html | 
				
			||||||
 | 
					    # edited to my own liking | 
				
			||||||
 | 
					    def color_variant(self, hex_color, brightness_offset = 1): | 
				
			||||||
 | 
					        """ takes a color like #87c95f and produces a lighter or darker variant """ | 
				
			||||||
 | 
					        if len(hex_color) != 6: | 
				
			||||||
 | 
					            print("Passed %s into color_variant(), needs to be in 87c95f format." % hex_color) | 
				
			||||||
 | 
					            return "000000" | 
				
			||||||
 | 
					        rgb_hex = [hex_color[x:x+2] for x in [0, 2, 4]] | 
				
			||||||
 | 
					        new_rgb_int = [int(hex_value, 16) + brightness_offset for hex_value in rgb_hex] | 
				
			||||||
 | 
					        new_rgb_int = [min([255, max([0, i])]) for i in new_rgb_int] # make sure new values are between 0 and 255 | 
				
			||||||
 | 
					        # hex() produces "0x88", we want just "88" | 
				
			||||||
 | 
					        new_hex_list = [hex(i)[2:].zfill(2) for i in new_rgb_int] | 
				
			||||||
 | 
					        new_hex = "".join(new_hex_list) | 
				
			||||||
 | 
					        return new_hex | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def disco(self, wait_ms): | 
				
			||||||
 | 
					        total_length = self._lm.count_pixels() | 
				
			||||||
 | 
					        for p in range(total_length): | 
				
			||||||
 | 
					            if len(self.current_colors) == total_length: | 
				
			||||||
 | 
					                color = self.current_colors[p] | 
				
			||||||
 | 
					                color = int(self.color_variant(color, random.randint(1, 10)), 16) | 
				
			||||||
 | 
					                if color >= 16777215: | 
				
			||||||
 | 
					                    color = int(random.choice(self.preset_colors), 16) | 
				
			||||||
 | 
					                self.current_colors[p] = hex(color)[2:] | 
				
			||||||
 | 
					            else: | 
				
			||||||
 | 
					                color = int(random.choice(self.preset_colors), 16) | 
				
			||||||
 | 
					                self.current_colors.append(hex(color)[2:]) | 
				
			||||||
 | 
					            self._lm.set_pixel_color(p, color) | 
				
			||||||
 | 
					        self._lm.show() | 
				
			||||||
 | 
					        time.sleep(wait_ms / 1000.0) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Main program logic follows: | 
				
			||||||
 | 
					    def run(self, args=None): | 
				
			||||||
 | 
					        loop = False | 
				
			||||||
 | 
					        if 'loop' in args and args['loop']: | 
				
			||||||
 | 
					            loop = args['loop'] | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        while self.get_loop().status(): | 
				
			||||||
 | 
					            self.disco(300) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if not loop: | 
				
			||||||
 | 
					                break | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue