From 23dac4bb7c6a73abd98386f66bf07ee759061244 Mon Sep 17 00:00:00 2001 From: Jason Coon Date: Tue, 17 Oct 2017 21:04:27 -0500 Subject: [PATCH] Ported from TinyTiM to ULTiM8x8 Cube --- Map.h | 6 ++--- README.md | 45 +++++++++++++++++++++++++--------- esp8266-fastled-webserver.ino | 13 ++++++---- ultim8x8.png | Bin 0 -> 46053 bytes 4 files changed, 44 insertions(+), 20 deletions(-) create mode 100644 ultim8x8.png diff --git a/Map.h b/Map.h index 14ea502..a22e7ab 100644 --- a/Map.h +++ b/Map.h @@ -1,6 +1,6 @@ -uint8_t coordsX[NUM_LEDS] = { 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, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0 }; -uint8_t coordsY[NUM_LEDS] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7 }; -uint8_t coordsZ[NUM_LEDS] = { 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 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 }; +uint8_t coordsX[NUM_LEDS] = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 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, 0, 0, 0, 0, 0, 0 }; +uint8_t coordsY[NUM_LEDS] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7 }; +uint8_t coordsZ[NUM_LEDS] = { 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, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7 }; void cubeXGradientPalette() { uint8_t hues = 8; diff --git a/README.md b/README.md index 635c2c9..d88a160 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,46 @@ -FastLED + ESP8266 Web Server +ULTiM8x8 Cube + FastLED + ESP8266 Web Server ========= -Control an addressable LED strip with an ESP8266 via a web browser or infrared remote control. +Control an RGB LED cube with an ESP8266 via a web browser. Hardware -------- -An ESP8266 development board, such as the [Adafruit HUZZAH ESP8266 Breakout]: +##### ESP8266 development board -[![Adafruit HUZZAH ESP8266 Breakout](https://cdn-shop.adafruit.com/310x233/2471-10.jpg)](https://www.adafruit.com/products/2471) +[![Adafruit Feather HUZZAH with ESP8266 WiFi](https://cdn-shop.adafruit.com/145x109/2821-07.jpg)](https://www.adafruit.com/product/2821) -Addressable LED strip, such as the [Adafruit NeoPixel Ring]: +[Adafruit Feather HUZZAH with ESP8266 WiFi](https://www.adafruit.com/product/2821) -[![Adafruit NeoPixel Ring](https://www.adafruit.com/images/145x109/1586-00.jpg)](https://www.adafruit.com/product/1586) +or + +[![Wemos D1 Mini Pro & Headers](https://ae01.alicdn.com/kf/HTB1P1KVaMsSMeJjSsphq6xuJFXah/WEMOS-D1-mini-Pro-V1-1-0-16M-bytes-external-antenna-connector-ESP8266-WIFI-Internet-of.jpg_200x200.jpg)](https://www.aliexpress.com/item/WEMOS-D1-mini-Pro-16M-bytes-external-antenna-connector-ESP8266-WIFI-Internet-of-Things-development-board/32724692514.html) + +[Wemos D1 Mini Pro & Headers](https://www.aliexpress.com/item/WEMOS-D1-mini-Pro-16M-bytes-external-antenna-connector-ESP8266-WIFI-Internet-of-Things-development-board/32724692514.html) + +##### 6 x ULTiM8x8 RGB LED panels + +[![ULTiM8x8](ultim8x8.png)](http://wyolum.com/ultim8x8/) + +[ULTiM8x8 RGB LED panels](http://wyolum.com/ultim8x8/) + +Other hardware: + +* [3.3V to 5V Logic Level Shifter](http://www.digikey.com/product-detail/en/texas-instruments/SN74HCT245N/296-1612-5-ND/277258) (required if LEDs "glitch") + +Recommended by [Adafruit NeoPixel "Best Practices"](https://learn.adafruit.com/adafruit-neopixel-uberguide/best-practices) to help protect LEDs from current onrush: +* [1000µF Capacitor](http://www.digikey.com/product-detail/en/panasonic-electronic-components/ECA-1EM102/P5156-ND/245015) +* [300 to 500 Ohm resistor](https://www.digikey.com/product-detail/en/stackpole-electronics-inc/CF14JT470R/CF14JT470RCT-ND/1830342) + +Optional shield to make everything more tidy: + +[![Wemos D1 Mini ESP8266 LED & Level Shifter Shield](https://d3s5r33r268y59.cloudfront.net/13194/products/thumbs/2017-05-06T15:02:37.208Z-IMG_20170506_100623.jpg.114x76_q85_pad_rcrop.jpg)](https://www.tindie.com/products/jasoncoon/wemos-d1-mini-esp8266-led-and-level-shifter-shield/) + +[Wemos D1 Mini ESP8266 LED & Level Shifter Shield](https://www.tindie.com/products/jasoncoon/wemos-d1-mini-esp8266-led-and-level-shifter-shield) Features -------- -* Turn the NeoPixel Ring on and off +* Turn the LEDs on and off * Adjust the brightness * Change the display pattern * Adjust the color @@ -41,7 +65,7 @@ The app is installed via the Arduino IDE which can be [downloaded here](https:// The app depends on the following libraries. They must either be downloaded from GitHub and placed in the Arduino 'libraries' folder, or installed as [described here](https://www.arduino.cc/en/Guide/Libraries) by using the Arduino library manager. * [FastLED](https://github.com/FastLED/FastLED) -* [IRremoteESP8266](https://github.com/markszabo/IRremoteESP8266) +* [IRremoteESP8266](https://github.com/sebastienwarin/IRremoteESP8266) * [Arduino WebSockets](https://github.com/Links2004/arduinoWebSockets) Download the app code from GitHub using the green Clone or Download button from [the GitHub project main page](https://github.com/jasoncoon/esp8266-fastled-webserver) and click Download ZIP. Decompress the ZIP file in your Arduino sketch folder. @@ -71,7 +95,4 @@ The firmware implements basic [RESTful web services](https://en.wikipedia.org/wi Infrared Remote Control ----------------------- -Control via infrared remote control is also supported, via the [ESP8266 port of the IRremote library](https://github.com/markszabo/IRremoteESP8266). - -[Adafruit NeoPixel Ring]:https://www.adafruit.com/product/1586 -[Adafruit HUZZAH ESP8266 Breakout]:https://www.adafruit.com/products/2471 +Control via infrared remote control is also supported, via the [ESP8266 port of the IRremote library](https://github.com/sebastienwarin/IRremoteESP8266). diff --git a/esp8266-fastled-webserver.ino b/esp8266-fastled-webserver.ino index ba88c07..f4347d6 100644 --- a/esp8266-fastled-webserver.ino +++ b/esp8266-fastled-webserver.ino @@ -1,6 +1,6 @@ /* ESP8266 + FastLED + IR Remote: https://github.com/jasoncoon/esp8266-fastled-webserver - Copyright (C) 2015-2016 Jason Coon + Copyright (C) 2015-2017 Jason Coon This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -62,8 +62,9 @@ ESP8266HTTPUpdateServer httpUpdateServer; #include "FSBrowser.h" #define DATA_PIN D5 -#define LED_TYPE WS2812B -#define COLOR_ORDER GRB +#define CLK_PIN D6 +#define LED_TYPE APA102 +#define COLOR_ORDER BGR #define NUM_LEDS 8 * 8 * 6 #define MILLI_AMPS 2000 // IMPORTANT: set the max milli-Amps of your power supply (4A = 4000mA) @@ -198,6 +199,8 @@ PatternAndNameList patterns = { // { fire, "Fire" }, // { water, "Water" }, + { strandTest, "Strand Test" }, + { showSolidColor, "Solid Color" } }; @@ -242,8 +245,8 @@ void setup() { delay(100); Serial.setDebugOutput(true); - FastLED.addLeds(leds, NUM_LEDS); // for WS2812 (Neopixel) - //FastLED.addLeds(leds, NUM_LEDS); // for APA102 (Dotstar) +// FastLED.addLeds(leds, NUM_LEDS); // for WS2812 (Neopixel) + FastLED.addLeds(leds, NUM_LEDS); // for APA102 (Dotstar) FastLED.setDither(false); FastLED.setCorrection(TypicalLEDStrip); FastLED.setBrightness(brightness); diff --git a/ultim8x8.png b/ultim8x8.png new file mode 100644 index 0000000000000000000000000000000000000000..fb5737722e154d8d2a946d508312879f96c8d931 GIT binary patch literal 46053 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 BjjR9w literal 0 HcmV?d00001