test getting pattern all at once
This commit is contained in:
		
							parent
							
								
									9da07501ba
								
							
						
					
					
						commit
						3d017e1ec7
					
				
					 1 changed files with 17 additions and 4 deletions
				
			
		|  | @ -4,7 +4,7 @@ import board | ||||||
| import logging | import logging | ||||||
| 
 | 
 | ||||||
| def defaultPattern(n, t): | def defaultPattern(n, t): | ||||||
|     return (0, 0, 255) |     return (n % 255, 0, t % 255) | ||||||
| 
 | 
 | ||||||
| class LightStrip: | class LightStrip: | ||||||
|   def __init__(self, data_pin = board.D18, string_length = 300, brightness = 1, pixel_order = neopixel.GRB, max_changes = 5): |   def __init__(self, data_pin = board.D18, string_length = 300, brightness = 1, pixel_order = neopixel.GRB, max_changes = 5): | ||||||
|  | @ -13,20 +13,31 @@ class LightStrip: | ||||||
|         self.np = neopixel.NeoPixel(self.data_pin, string_length, brightness = brightness, auto_write=True, pixel_order = pixel_order) |         self.np = neopixel.NeoPixel(self.data_pin, string_length, brightness = brightness, auto_write=True, pixel_order = pixel_order) | ||||||
|         self.pattern = defaultPattern |         self.pattern = defaultPattern | ||||||
|         self.cur_tick = 0 |         self.cur_tick = 0 | ||||||
|  |         self.cur_index = 0 | ||||||
|         self.max_changes = max_changes |         self.max_changes = max_changes | ||||||
|  |         self.cur_pattern = [] | ||||||
| 
 | 
 | ||||||
|   def set_light_level(self, level): |   def set_light_level(self, level): | ||||||
|     self.np.brightness = level |     self.np.brightness = level | ||||||
|   def pattern(self, pattern_callback): |   def pattern(self, pattern_callback): | ||||||
|     self.pattern = pattern_callback |     self.pattern = pattern_callback | ||||||
|  | 
 | ||||||
|  |   def get_next_pattern_tick(self): | ||||||
|  |     n = self.np.n | ||||||
|  |     t = self.cur_tick | ||||||
|  |     for i in range(n): | ||||||
|  |       self.cur_pattern[i] = self.pattern(i, t) | ||||||
|  |     self.cur_tick = t + 1 | ||||||
|    |    | ||||||
|   def tick(self): |   def tick(self): | ||||||
|     np = self.np |     np = self.np | ||||||
|     t = self.cur_tick |     t = self.cur_tick | ||||||
|     n = np.n |     n = np.n | ||||||
|     changes = 0 |     changes = 0 | ||||||
|     for i in range(n): |     ind = self.cur_index | ||||||
|       col = self.pattern(i, t) |     for i in range(ind, n): | ||||||
|  |       col = self.cur_pattern[i] | ||||||
|  |       self.cur_index = i | ||||||
|       logging.debug("TEST VALUES: np {} col {} same {}".format(np[i], col, tuple(np[i]) != col)) |       logging.debug("TEST VALUES: np {} col {} same {}".format(np[i], col, tuple(np[i]) != col)) | ||||||
|       if tuple(np[i]) != col: |       if tuple(np[i]) != col: | ||||||
|         changes = changes + 1 |         changes = changes + 1 | ||||||
|  | @ -34,4 +45,6 @@ class LightStrip: | ||||||
|         logging.debug("CHANGE COLOR OF PIXEL {} TO {} ON TICK {}".format(i, col, t)) |         logging.debug("CHANGE COLOR OF PIXEL {} TO {} ON TICK {}".format(i, col, t)) | ||||||
|         if changes >= self.max_changes: |         if changes >= self.max_changes: | ||||||
|           break; |           break; | ||||||
|     self.cur_tick = t + 1 |     if self.cur_index >= (n-1): | ||||||
|  |       self.get_next_pattern_tick() | ||||||
|  |       self.cur_index = 0 | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue