Flame Lamp
Free
Ambient Light using NeoPixels and a Arduino Nano as a light source :-)

The lamps shade is printed in PET-G using the “spiral outer contour mode” without any bottom layers.

The base is printed in silver ABS, 0.2mm resolution.

For both prints I used a 0.4mm nozzle.

The Arduino sketch and library I used are can be downloaded at: https://www.thingiverse.com/thing:3297082 or https://www.myminifactory.com/object/3d-print-81732. They are from AdaFruit and I just changed it a bit so the LED's slowly change color. For more info: https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use

The 6 LED's are soldered in series to form a ring. Because they can take a max of 60mA each, I took the 5V from the Arduino's internal regulator.

Note: I had to hot-glue the Arduino to the base, so it can't move while plugging the USB cable in and out.

If you have any questions, feel free to ask :-)

Do you have constructive comments or think I made a mistake? Please tell me :-)

sketch--

#include <Adafruit_NeoPixel.h> #ifdef __AVR__   #include <avr/power.h> #endif

#define PIN 2

// Parameter 1 = number of pixels in strip // Parameter 2 = Arduino pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: //   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) //   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) //   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products) //   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) //   NEO_RGBW    Pixels are wired for RGBW bitstream (NeoPixel RGBW products) Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);

// IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across // pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input // and minimize distance between Arduino and first pixel.  Avoid connecting // on a live circuit...if you must, connect GND first.

void setup() {   // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket   #if defined (__AVR_ATtiny85__)     if (F_CPU == 16000000) clock_prescale_set(clock_div_1);   #endif   // End of trinket special code

  strip.begin();   strip.setBrightness(50);   strip.show(); // Initialize all pixels to 'off' }

void loop() {

  rainbow(80);

}

// Fill the dots one after the other with a color void colorWipe(uint32_t c, uint8_t wait) {   for(uint16_t i=0; i<strip.numPixels(); i++) {     strip.setPixelColor(i, c);     strip.show();     delay(wait);   } }

void rainbow(uint8_t wait) {   uint16_t i, j;

  for(j=0; j<256; j++) {     for(i=0; i<strip.numPixels(); i++) {       strip.setPixelColor(i, Wheel((i+j) & 255));     }     strip.show();     delay(wait);   } }

// Slightly different, this makes the rainbow equally distributed throughout void rainbowCycle(uint8_t wait) {   uint16_t i, j;

  for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel     for(i=0; i< strip.numPixels(); i++) {       strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));     }     strip.show();     delay(wait);   } }

//Theatre-style crawling lights. void theaterChase(uint32_t c, uint8_t wait) {   for (int j=0; j<10; j++) {  //do 10 cycles of chasing     for (int q=0; q < 3; q++) {       for (uint16_t i=0; i < strip.numPixels(); i=i+3) {         strip.setPixelColor(i+q, c);    //turn every third pixel on       }       strip.show();

      delay(wait);

      for (uint16_t i=0; i < strip.numPixels(); i=i+3) {         strip.setPixelColor(i+q, 0);        //turn every third pixel off       }     }   } }

//Theatre-style crawling lights with rainbow effect void theaterChaseRainbow(uint8_t wait) {   for (int j=0; j < 256; j++) {     // cycle all 256 colors in the wheel     for (int q=0; q < 3; q++) {       for (uint16_t i=0; i < strip.numPixels(); i=i+3) {         strip.setPixelColor(i+q, Wheel( (i+j) % 255));    //turn every third pixel on       }       strip.show();

      delay(wait);

      for (uint16_t i=0; i < strip.numPixels(); i=i+3) {         strip.setPixelColor(i+q, 0);        //turn every third pixel off       }     }   } }

// Input a value 0 to 255 to get a color value. // The colours are a transition r - g - b - back to r. uint32_t Wheel(byte WheelPos) {   WheelPos = 255 - WheelPos;   if(WheelPos < 85) {     return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);   }   if(WheelPos < 170) {     WheelPos -= 85;     return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);   }   WheelPos -= 170;   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0); }

Loading comments...

Loading prints...

Flame Lamp

likes
5 collections
Creative Commons Attribution-NoDerivatives

You can download, share, and use commercially, but you cannot change the material in any way or use it to make something new.

CC BY-ND Licensed under CC BY-ND
Files Included

2 downloadable files:

View 3D
lamp_base.stl
STL Model
3.0 MB
File size
View 3D
lamp_shade_VASE_MODE_without_bottom.stl
STL Model
9.3 MB
File size
Free download - login required
Downloaded: 168 times
We value your privacy We use cookies to improve your experience and analyze site traffic. By clicking "Accept", you consent to our use of cookies and analytics tracking. Learn more