Neopixel Nanoleaf Lights (No screws, No supports needed!)

My take on nanoleaf lights. I wanted to make these simple enough for anyone to assemble.
21
49
0
721
aktualisiert 17. März 2024

Beschreibung

PDF

LEDs or Neopixels can be glued in either horizontally or vertically. I put 2 LED slots and tons of mounting holes for easy assembly and customization. I used an Attiny85 , 5V 3Amp power supply, 2 position switch, 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 https://www.amazon.com/

2  Position switch https://www.amazon.com/

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

Attiny85 https://www.amazon.com/

5V 2Amp power supply https://www.amazon.com/

Motion detector https://www.amazon.com/

 

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

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

5V 2Amp Power supply https://www.amazon.com/

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/ 

I can also make these for you, just message me at https://beautifulleds.etsy.com 

 

// NEOPIXEL BEST PRACTICES for most reliable operation:
// - Add 1000 uF CAPACITOR between NeoPixel strip's + and - connections.
// - MINIMIZE WIRING LENGTH between microcontroller board and first pixel.
// - NeoPixel strip's DATA-IN should pass through a 300-500 OHM RESISTOR.
// - AVOID connecting NeoPixels on a LIVE CIRCUIT. If you must, ALWAYS
//   connect GROUND (-) first, then +, then data.
// - When using a 3.3V microcontroller with a 5V-powered NeoPixel strip,
//   a LOGIC-LEVEL CONVERTER on the data line is STRONGLY RECOMMENDED.
// (Skipping these may work OK on your workbench but can fail in the field)

#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 72 

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(200); // 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(firstPixelHue);
   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(firstPixelHue, 3);
   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(firstPixelHue, 6);
   strip.show(); // Update strip with new contents
   delay(wait);  // Pause for a moment
 }
}

 

Tags



Herkunft des Modells

Der Autor hat dieses Modell als seine eigene Kreation gekennzeichnet.

Lizenz