Search

LED Mood Lamp

Led Mood Lamp - Guide

About the project

A personalisable, practical and party performing all-in-one mood lamp.

Project info

Difficulty: Easy

Platforms: Arduino

Estimated time: 2 hours

License: GNU General Public License, version 3 or later (GPL3+)

Items used in this project

Hardware components

JST PH 3-Pin Socket to Color Coded Cable - 200mm JST PH 3-Pin Socket to Color Coded Cable - 200mm x 1
Adafruit NeoPixel LED Strip with 3-pin JST Connector - 60 LED/meter / 0.5 Meter Adafruit NeoPixel LED Strip with 3-pin JST Connector - 60 LED/meter / 0.5 Meter x 1
M3 6.0mm Screw Zinc Plated Steel M3 6.0mm Screw Zinc Plated Steel x 10
DFRduino Nano DFRduino Nano x 1
Tactile Switch Buttons 10 pack Tactile Switch Buttons 10 pack x 1
Breadboard Friendly SPDT Slide Switch Breadboard Friendly SPDT Slide Switch x 2
22AWG 19x34 WH PRICE PER FT 22AWG 19x34 WH PRICE PER FT x 2
22AWG 19x34 GR PRICE PER FT 22AWG 19x34 GR PRICE PER FT x 2
USB2.0 A-MtoMicro Blk 1m USB2.0 A-MtoMicro Blk 1m x 1

View all

Software apps and online services

Arduino IDE Arduino IDE

Hand tools and fabrication machines

Soldering Iron Soldering Iron x 1
3D Printer 3D Printer x 1

Story

 

Printing the parts:

There are five 3D printed components in this project. The Base, Stem, Shade, LED Column, and Cover.

In the downloads section of this project, you will find more than one style of stem or shade to choose from. They are all compatible with each other so the choice is down to your personal taste. You can further personalise your lamp through your choice of filament colour and material.

I'll guide you through assembling one combination of parts to build a Mood Lamp. The instructions are the same if you choose to print a different stem or shade.

Base.stl

Layer height: 0.15mm

Supports: No

Brim: No

Orientation on the print bed: Upside down

Print time: about five hours

Stem.stl

Layer height: 0.15mm

Supports: No

Brim: No

Orientation on the print bed: Upright

Print time: about 7 hours

Shade.stl

This part was printed with only a single perimeter and no infill in order to allow plenty of light to pass through.

Layer height: 0.15mm

Supports: No

Brim: No

Orientation on the print bed: Upright

Print time: about 10 hours

LED Column.stl

Layer height: 0.2mm

Supports: No

Brim: No

Orientation on the print bed: Upright

Print time: about 45 minutes

Cover.stl

Layer height: 0.20mm

Supports: No

Brim: No

Orientation on the print bed: Upright

Print time: about 1.5 hours

Attaching LEDs

We will start the assembly by attaching the LEDs to the 3D printed 'LED Column'. You could consider using either hot melt glue or super glue. If you choose hot melt glue then you will need to be generous with it. I'm going to use super glue as it has a stronger more permanent hold but will need holding in place whilst it sets. 

Unravel the LED strip from the spindle it arrived on and thread the wires through the hole at the base of the LED column.

Before we apply any glue it is a good idea to wrap the LEDs around the column so you get an idea of how far apart they need to be spaced before you start gluing them in place.

Once you know how far you'll space them they can be unravelled and then wrapped around the column again but this time apply glue as you go making sure each bit has cured before moving onto the section.

Connecting Stem to LED Holder

Connect the Female JST connector to the end of the LED wire (they just push together).

Feed the extended wires down though the narrowest end of the stem and pull them out through the wider end.

Apply some glue around the rim at the top of the stem and then position the LED holder centrally over the rim and push firmly together whilst the glue sets.

Once set we can take the base of the lamp and thread the wires through the hole on the top. As before, apply some glue to the rim at the other end of the stem and carefully position it onto the base. Before the glue begins to set turn it around and make sure your happy with its positioning as seen from all angles. 

Prepare switches and button

Cut and strip two 10cm lengths of wire.

Solder one of these to the centre leg of one switch and then repeat with the other pair.

Take the red wire coming from our LEDs (this is the 5v power connection) and solder this to one of the unused legs on one of the switches.

Repeat this again for the white wire coming from the LEDs with the other switch. The white wire is the digital input for the LEDs. 

Prepare another two 10cm lengths of wire ready to solder to the momentary push button.

Solder each wire to two diagonally opposite legs on the back of the push button.

Use some glue to fix the two sliding switches into their hole from inside the base of the lamp. Be careful to not let the glue get in the sliding mechanism or it may prevent it from working properly.

Now fix the button into its place, again, be careful to only get glue on the outside of the button housing and not onto the button itself.

Program the Arduino Nano

Add the Arduino Nano onto the top of the breadboard and connect the USB cable to it and the other end into your PC. Open the Arduino IDE on your PC. If you have not yet installed this, you can find the free download and instruction here: https://www.arduino.cc/en/main/software 

We need to install a couple of libraries. The first one is Adafruit's Neopixel library.

To do this, in the Arduino IDE go to:

Sketch >> Include library >> Manage Libraries

From here search for 'Neopixel'. Look for Adafruit Neopixel by Adafruit and install the latest version.

You then close the windows after the install is complete.

The second library you need it the WS2812FX library. This can be downloaded from https://github.com/kitesurfer1404/WS2812FX 

You can download a zip of the repository by clicking 'Clone or Download' and then 'Download ZIP'

Extract the downloaded file into your Arduino IDEs Library folder.

The last bit of code you need is the one we will upload to our Arduino Nano for this project. You will find the file available to download at the bottom of this page in the downloads section.

Before you can upload the code you need to ensure you have a correct board type and processor selected int the Arduino IDE. To do this, head to 'Tools' in the menu and ensure you have the Board Type of 'Arduino Nano' selected and the Processor set as 'ATmega328P (Old bootloader)'. 

After the upload has completed you can disconnect the USB cable from the PC. Leave the other end attached to the Arduino to help us position the Arduino and Breadboard inside the base of the lamp. To do this, peel of the protective sheet on the self-adhesive side of the breadboard and push it firmly into place on the underside of the lamp base.

Connect up the wires

At this stage, you can choose between either inserting the wires into the breadboard points to connect them to the Arduino (which would make it easy to repurpose your Arduino in the future) or soldering the wires to the top side of the Arduino - a more permanent solution.

If you choose to utilise the breadboard as I'm going to do then you will likely find the wires easier to insert if you 'tin' them first. This involves applying some solder to the strands of wire so that they come together as one more rigid wire which is easier to insert into the breadboard.

The switch which is connected to the Red 5V lead coming from the LEDs should have its unconnected wire connected to the 5V on the Arduino.

The other switch, which is connected to the LEDs white digital in lead, should have its free wire connected to D6 on the Arduino.

The remaining black ground lead coming from the LEDs is connected to a ground connection on the Arduino.

One wire coming from the momentary button is also connected to a ground point on the Arduino.

The remaining wire coming from the momentary button is connected to D2.

If you now connect the USB cable coming from the Arduino to a power supply such as a computer, battery pack or wall socket you will be able to check that all your switches and buttons work as intended. One of the switches will turn the LEDs on and off, the other will pause the sequence. The button will change the pattern.

If everything works we can proceed with adding the cover. If you encounter something that is not behaving as expected carefully check back through your work so far.

Fit the cover

The cover is secured in place with three of the M3 x 6 bolts. It's a simple case of inverting the lamp and securing it onto the underside of the base. Take care not to trap the USB wire by feeding it through the provided slot.

Add the shade

The last task is adding the shade, and this is also the easiest one. After you have 3D printed your shade it is just lowered down over the LED column and rests on the top of the stem.

Project complete

Don't forget you can print other shade designs in alternative colours whenever you fancy a different style.

We've preprogrammed some useful light sequences; a solid bright white to use as a practical lamp, a slowly changing atmospheric pattern for relaxation, a lively party program for when you're hosting your mates and a few more for you to try out for yourself.

Schematics and circuit diagrams

Circuit Diagram

CAD, enclosures and custom parts

Smooth stem

An alternative 'smooth' stem option

LED holder

The Neopixels wrap around this part

Cover

Cover for electronics

Lamp shade

Slips on top of the LED holder

Stem

Stem which connects the base to the LED holder & shade

Base

Base of the lamp

Code

Project Code- Mood Lamp

Don't forget ou will need to install the WS2812FX library which can be found here: https://github.com/kitesurfer1404/WS2812FX

Credits

Leave your feedback...