Shopping Cart
Free 3D file BLAST R6

Free File – BLAST R6 Animated LED Box

Represent the new Blast/R6 partnership with this free 3D-printable LED box!

I’ve designed this cool little LED box with the logos of the BLAST R6 eSports partnership. Inside is a custom coded Arduino Nano, and 22 RGB LEDs that fade into random colours for that full Rainbow experience.

This contains 3D-printable .stl files that you can download and print on your own 3D printer in a colour of your choice.

Recommended settings: 0.3mm layer height / 15% infill / PLA / supports on print bed


Required Parts

  • 1 x RGB LED Strip (22 total)
  • 1 x Arduino Nano
  • 1 x 9v Battery & connector
  • 4 x 5x2mm magnets
  • Black & white filament
  • 1 x 9 x 3.5 x 6mm switch
  • Soldering iron & wire

Once you have printed the .stl files in black/white or a filament combo of your choice, you will need to code the Arduino Nano. To do this, you’ll require the Arduino IDE application.

Important: this code uses PIN6 for the DIN LED control. Wire the 9v battery ground to the GND pin, and the positive to the first pin of the switch. Then, wire the second pin of the switch to the VIN pin on the Arduino Nano. The +5v pin on the LED strip must be wired to the 5V pin on the Arduino Nano.

Important: Make sure you thread the 9v battery cables through the hole in the top of the battery compartment. Also make sure that the magnets are aligned correctly when gluing in place.

Here is the code for the LEDs:

// NeoPixel code for BLAST R6 Display
// by Darny3D. WARNING - do not edit!
// Board; Arduino Nano
// Processor: ATmega328P
#include <Adafruit_NeoPixel.h>
#define LED_PIN 6
#define LED_COUNT 30
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800);
void setup() {
  strip.begin();
  strip.show(); // Initialize all pixels to "off"
}
void loop() {
  // Set all LEDs to white
  for(int i=0; i<strip.numPixels(); i++) {
    strip.setPixelColor(i, 255, 255, 255);
  }
  strip.show();
  // Fade to random color
  uint32_t targetColor = strip.Color(random(256), random(256), random(256));
  for(int j=0; j<256; j++) {
    for(int i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, blendColor(strip.getPixelColor(i), targetColor, j));
    }
    strip.show();
    delay(10);
  }
  // Fade back to white
  uint32_t currentColor = strip.getPixelColor(0); // Assume all pixels are initially the same color
  for(int j=0; j<256; j++) {
    for(int i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, blendColor(strip.getPixelColor(i), strip.Color(255, 255, 255), j));
    }
    strip.show();
    delay(10);
  }
}
// Function to blend two colors based on a blending factor
uint32_t blendColor(uint32_t color1, uint32_t color2, uint8_t factor) {
  uint8_t r = (factor * ((color2 >> 16) & 0xFF) + (255 - factor) * ((color1 >> 16) & 0xFF)) / 255;
  uint8_t g = (factor * ((color2 >> 8) & 0xFF) + (255 - factor) * ((color1 >> 8) & 0xFF)) / 255;
  uint8_t b = (factor * (color2 & 0xFF) + (255 - factor) * (color1 & 0xFF)) / 255;
  return strip.Color(r, g, b);
}
Worldwide shipping

10+ countries served

Easy 14 days returns

14 days money back guarantee

100% Secure Checkout

PayPal secure