account for rgb
This commit is contained in:
		
							parent
							
								
									9e1c0f5be1
								
							
						
					
					
						commit
						e337625791
					
				
					 1 changed files with 28 additions and 8 deletions
				
			
		
							
								
								
									
										36
									
								
								lights.js
									
										
									
									
									
								
							
							
						
						
									
										36
									
								
								lights.js
									
										
									
									
									
								
							|  | @ -9,6 +9,16 @@ var pixel_cache = new Uint32Array(cfg.leds); | ||||||
| var next_pattern = new Uint32Array(cfg.leds); | var next_pattern = new Uint32Array(cfg.leds); | ||||||
| var pattern = {} | var pattern = {} | ||||||
| 
 | 
 | ||||||
|  | function rgb_to_int(r, g, b) { | ||||||
|  |   return ((r << 8) + g) << 8 + b; | ||||||
|  | } | ||||||
|  | function int_to_rgb(int) { | ||||||
|  |   var r = int >> 16 & 0xFF; | ||||||
|  |   var g = int >> 8 & 0xFF; | ||||||
|  |   var b = int & 0xFF; | ||||||
|  |   return { r: r, g: g, b: b }; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| ws281x.configure({ | ws281x.configure({ | ||||||
|   leds: cfg.leds || 300, |   leds: cfg.leds || 300, | ||||||
|   brightness: cfg.brightness || 200, |   brightness: cfg.brightness || 200, | ||||||
|  | @ -47,16 +57,26 @@ export function tick() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function fade(index) { | function fade(index) { | ||||||
|   var original = pixel_cache[index]; |   var original = int_to_rgb(pixel_cache[index]); | ||||||
|   var final = next_pattern[index]; |   var current = int_to_rgb(pixels[index]); | ||||||
|   var diff = final - original; |   var final = int_to_rgb(next_pattern[index]); | ||||||
|   var interval = diff / fade_ticks; |   var diff_r = final.r - original.r; | ||||||
|  |   var diff_g = final.g - original.g; | ||||||
|  |   var diff_b = final.b - original.b; | ||||||
|  |   var interval_r = diff_r / fade_ticks; | ||||||
|  |   var interval_g = diff_g / fade_ticks; | ||||||
|  |   var interval_b = diff_b / fade_ticks; | ||||||
| 
 | 
 | ||||||
|   if (Math.abs(final - pixels[index]) < interval) { |   if (Math.abs(final.r - current.r) < interval_r && | ||||||
|     pixels[index] = final; |     Math.abs(final.g - current.g) < interval_g && | ||||||
|     pixel_cache[index] = final; |     Math.abs(final.b - current.b) < interval_b | ||||||
|  |   ) { | ||||||
|  |     pixels[index] = next_pattern[index]; | ||||||
|  |     pixel_cache[index] = next_pattern[index]; | ||||||
|   } |   } | ||||||
|   else { |   else { | ||||||
|     pixels[index] += interval; |     pixels[index] = rgb_to_int(current.r + interval_r, | ||||||
|  |       current.g + interval_g, | ||||||
|  |       current.b + interval_b); | ||||||
|   } |   } | ||||||
| } | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue