The file 'Tony Stark’s Arc Reactor RGB Edition 3D Printer Model' is (stl,STL) file type, size is 665.0KB.
This project is highly inspired by https://www.thingiverse.com/thing:3321182 so, many thanks to the author for his amazing work.
I've only modified the base to put an Arduino nano to control RGB stripes. There are 3 knobs to control colors in HSV color space (https://github.com/FastLED/FastLED/wiki/FastLED-HSV-Colors)
The assembling is pretty easy, refer to the original thing for more photos. Of course you can find schematics of the circuit between files wich again is really simple.
Bill of material
Please note that this circuit is not intended for long usage at maximum brightness since taking current from arduino will ruin it faster... If you intend to leave it on for long time please add an external 5V source and power both led and arduino from it. Theoretically this amout of led can draw as much as 1 Amp (full brightness, white color)
The arduino code is (you will need FastLED library https://github.com/FastLED/FastLED):
#include <FastLED.h>#define LED_PIN_RING 4#define LED_PIN_CENTER 5#define NUM_LEDS_RING 16#define NUM_LEDS_CENTER 1#define BRIGHTNESS 255#define LED_TYPE WS2812B#define COLOR_ORDER GRB#define UPDATES_PER_SECOND 100CRGB leds_ring[NUM_LEDS_RING];CRGB leds_center[NUM_LEDS_CENTER];int pulse = 129;int fadeAmount = 1; void setup() { delay( 1000 ); // power-up safety delay Serial.begin(115200); FastLED.addLeds<LED_TYPE, LED_PIN_RING, COLOR_ORDER>(leds_ring, NUM_LEDS_RING); FastLED.addLeds<LED_TYPE, LED_PIN_CENTER, COLOR_ORDER>(leds_center, NUM_LEDS_CENTER); FastLED.setBrightness(BRIGHTNESS);}void loop(){ fadeToBlackBy( leds_ring, NUM_LEDS_RING, 20); fadeToBlackBy( leds_center, NUM_LEDS_CENTER, 20); byte dothue = 0; int delta = 15 ; for ( int i = 0; i < 80; i++) { leds_ring[beatsin16( i + 16, 0, NUM_LEDS_RING - 1 )] = CHSV(dothue, map(analogRead(A1), 0, 1024, 0, 255), map(analogRead(A2), 0, 1024, 0, 255)); leds_center[beatsin16( i + 16, 0, NUM_LEDS_CENTER - 1 )] = CHSV(dothue, map(analogRead(A1), 0, 1024, 0, 255), map(analogRead(A2), 0, 1024, 0, 255)); dothue = random(map(analogRead(A0), 0, 1024, 0, 255) - delta, map(analogRead(A0), 0, 1024, 0, 255) + delta); } pulse = pulse + fadeAmount; if (pulse <= 128 || pulse >= 255) { fadeAmount = -fadeAmount; } FastLED.setBrightness(pulse); FastLED.show(); FastLED.delay(1000 / UPDATES_PER_SECOND);}
Base.stl | 641.8KB | |
Bottom.STL | 165.7KB | |
Cage.stl | 113.9KB | |
Caps.stl | 314.1KB | |
Cover.stl | 92.7KB | |
Crystal_Ring_Cover.stl | 108.5KB | |
Crystal_Ring_Shell.stl | 103.2KB | |
Holder.stl | 8.9KB | |
Lower_Ring.stl | 728.6KB | |
Main_Crystal_Cover.stl | 42.7KB | |
Main_Crystal_Shell.stl | 47.6KB | |
Support.stl | 87.6KB | |
Upper_Ring.stl | 269.5KB |