| 
					
				 | 
			
			
				@@ -0,0 +1,105 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <FastLED.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define LED_PIN  13 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define COLOR_ORDER GRB 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define CHIPSET     WS2811 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define BRIGHTNESS 10 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Params for width and height 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const uint8_t kMatrixWidth = 16; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const uint8_t kMatrixHeight = 16; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+uint16_t XY( uint8_t x, uint8_t y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  uint16_t i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if ( x & 0x01) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    i = kMatrixHeight * (kMatrixWidth - (x + 1)) + y; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    i = kMatrixHeight * (kMatrixWidth - x) - (y + 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define NUM_LEDS (kMatrixWidth * kMatrixHeight) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+CRGB leds_plus_safety_pixel[ NUM_LEDS + 1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+CRGB* const leds( leds_plus_safety_pixel + 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+uint16_t XYsafe( uint8_t x, uint8_t y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if ( x >= kMatrixWidth) return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if ( y >= kMatrixHeight) return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return XY(x, y); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+uint8_t sun_yx[16][16] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+uint8_t cloud_yx[16][16] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void DrawFrame(uint8_t arr[][16]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  for (int i = 0; i < 16; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for (int j = 0; j < 16; j++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      uint8_t elem = arr[i][j]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (elem == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        leds[ XYsafe(i, j)]  = CRGB::Yellow; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void loop() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  DrawFrame(sun_yx); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  FastLED.show(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  delay(3000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  FastLED.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  DrawFrame(cloud_yx); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  FastLED.show(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  delay(3000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  FastLED.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void setup() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Serial.begin(9600); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  FastLED.addLeds<CHIPSET, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalSMD5050); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  FastLED.setBrightness( BRIGHTNESS ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |