Baby Neopixel Nanoleafs (No Screws, No supports!)

Cute itsy-bitsy wittle nanoleafs!
61
115
0
1416
updated February 27, 2025

Description

PDF

OK everybody welcome the newest member to the Nanoleaf family! Little Baby Nanoleaf!! Now with lettered and numbered lenses! Also check the Baby Nanoleaf lenses https://www.printables.com/model/427212-baby-nanoleaf-lenses

LEDs or Neopixels can be glued in horizontally. I put 2 LED slots for easy assembly and customization. I used Neopixels, an Attiny85, a micro USB cable, and a push button. I also designed a base with a spot for an IR motion detector. The code I used to program the ATTINY85 is at the bottom. 

Neopixels

I use 60 LEDS per meter or 3.2ft 100 led/ IP30-(this describes the LEDS waterproofing) 

 https://www.amazon.com/

Push button https://www.amazon.com/

Micro USB Cable https://www.amazon.com/

Attiny85 https://www.amazon.com/

 

Alternatively you can purchase a WS2812B controller (ONLY USE THE POWER SUPPLY YOUR LIGHTS ARE RATED FOR!!!)

WS2812B controller https://www.amazon.com/

5V 3Amp Power supply - ALITOVE 5V 3A 15W AC 100V~240V to DC  https://a.co/d/0hkH8SWY 

Simply print out your shapes and some connectors. Assemble into desired shape then cover the extra slots with the side cover. Then string through your LED strip, mount it to the wall with screws or adhesive, add your lens, plug in the power and done!

The code I use is ArduinoIDE and the Adafruit libraries https://www.adafruit.com/ 

 

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#define LED_PIN    3

// How many NeoPixels are attached to the Arduino?
#define LED_COUNT 49

 

Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

 

void setup() {
 #if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
 clock_prescale_set(clock_div_1);
 #endif
 strip.begin();
 strip.show(); // Initialize all pixels to 'off'
 strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)
 }
 
void loop() 
{
   colorWipe(strip.Color(255, 0, 0), 20); // Red
   colorWipe(strip.Color(255, 127, 0), 20); // Orange
   colorWipe(strip.Color(255, 255, 0), 20); // Yellow
   colorWipe(strip.Color(0, 255, 0), 20); // Green
   colorWipe(strip.Color(0, 0, 255), 20); // Blue
   colorWipe(strip.Color(75, 0, 130), 20); // Indigo
   colorWipe(strip.Color(148, 0, 211), 20); // Violet
   rainbow(5);
   rainbow2(5);
   rainbow3(5);
   rainbow4(5);
   colorWipe(strip.Color(148, 0, 211), 20); // Violet
   colorWipe(strip.Color(75, 0, 130), 20); // Indigo
   colorWipe(strip.Color(0, 0, 255), 20); // Blue
   colorWipe(strip.Color(0, 255, 0), 20); // Green
   colorWipe(strip.Color(255, 255, 0), 20); // Yellow
   colorWipe(strip.Color(255, 127, 0), 20); // Orange
   colorWipe(strip.Color(255, 0, 0), 20); // Red
 }

 

// 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(int wait) {
 for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) {
   // strip.rainbow() can take a single argument (first pixel hue) or
   // optionally a few extras: number of rainbow repetitions (default 1),
   // saturation and value (brightness) (both 0-255, similar to the
   // ColorHSV() function, default 255), and a true/false flag for whether
   // to apply gamma correction to provide 'truer' colors (default true).
   strip.rainbow(firstPixelHue, 1/2);
   // Above line is equivalent to:
   // strip.rainbow(firstPixelHue, 1, 255, 255, true);
   strip.show(); // Update strip with new contents
   delay(wait);  // Pause for a moment
 }
}

void rainbow2(int wait) {
 for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) {
   // strip.rainbow() can take a single argument (first pixel hue) or
   // optionally a few extras: number of rainbow repetitions (default 1),
   // saturation and value (brightness) (both 0-255, similar to the
   // ColorHSV() function, default 255), and a true/false flag for whether
   // to apply gamma correction to provide 'truer' colors (default true).
   strip.rainbow(firstPixelHue);
   // Above line is equivalent to:
   // strip.rainbow(firstPixelHue, 1, 255, 255, true);
   strip.show(); // Update strip with new contents
   delay(wait);  // Pause for a moment
 }
}


void rainbow3(int wait) {
 for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) {
   // strip.rainbow() can take a single argument (first pixel hue) or
   // optionally a few extras: number of rainbow repetitions (default 1),
   // saturation and value (brightness) (both 0-255, similar to the
   // ColorHSV() function, default 255), and a true/false flag for whether
   // to apply gamma correction to provide 'truer' colors (default true).
   strip.rainbow(firstPixelHue, 3);
   // Above line is equivalent to:
   // strip.rainbow(firstPixelHue, 1, 255, 255, true);
   strip.show(); // Update strip with new contents
   delay(wait);  // Pause for a moment
 }
}

void rainbow4(int wait) {
 for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) {
   // strip.rainbow() can take a single argument (first pixel hue) or
   // optionally a few extras: number of rainbow repetitions (default 1),
   // saturation and value (brightness) (both 0-255, similar to the
   // ColorHSV() function, default 255), and a true/false flag for whether
   // to apply gamma correction to provide 'truer' colors (default true).
   strip.rainbow(firstPixelHue, 6);
   // Above line is equivalent to:
   // strip.rainbow(firstPixelHue, 1, 255, 255, true);
   strip.show(); // Update strip with new contents
   delay(wait);  // Pause for a moment
 }
}

Tags



Model origin

The author marked this model as their own original creation.

License