Prints (0)

Description

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); }

Design Files

File Size

lamp shade VASE MODE without bottom.stl
9.25 MB
lamp base.stl
2.98 MB

Comments

Nico 3D
The STL file is full, should be empty according to picture, isn't it?
Reply4 years ago
jobsmolders
3d-Nico: Hi 3d-Nico, the Lampshade must be printed in the "Vase Mode" or Spiral Outer Contour Mode ( in Cura). This mode only prints the wall layer, without the Infill material. Also the amount of bottom Layers have to be set to zero. This way the Lampshade is printed without a Bottom. As a second option: Slice the model with 1Wall Layer, 0 Top & Bottom Layers, 0% infill and 0.2mm print resolution with a 0.4mm Nozzle. I hope this helps With kind regards Job
Reply4 years ago
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

&times;