Introduction: The Awesome Rainbow Tornado Lamp

About: Just another DIY creator gaining experience through every project!

Lamps. Pretty boring by themselves huh? Lets change that!

In this instructable, I will show you how to make an awesome rainbow tornado lamp - mostly from easily acquired supplies as well.

This is my first instructable as well so please give me all the feedback you can in the comments section at the end.

Step 1: Gather Your Materials

This project is made from materials that are very easy to find, if not available already.

These are the materials you will need but you can improvise a little if you need to. They are broken down into the major parts they compose:


  • 1 round bottle. I used a Sparkling ICE bottle because it was a nice size too
  • 1 Foam Plate (or a bowl, doesn't really matter)
  • 1 metal paperclip.
  • Non - stick spray (you will see the need for this later)

Lamp base:

  • Thin wood sheets. You can also print out a pattern of choice on paper and use that instead.
  • 1 small cardboard box
  • Hot Glue. You will use this for everything, but mainly for the lamp base.


  • 1 Arduino Mega. You can use other models if you want, but more on that later.
  • Thin wire. Lots of it.
  • 4 RGB multicolor LEDs. I used common anode LEDs. You can use common cathode, more on that later too.
  • Lead Solder. Mine has flux in it already
  • 1 slide switch
  • 1 Potentiometer, if you want later on
  • 1 mini motor with a tiny gear on the end
  • 1 9V battery
  • 1 9V battery clip
  • 4 Arduino cables that fit the pins
  • 1 USB type B cable (printer USB cable)
  • 1 two part phone charger. (you only need the wall plug end)

As for the tools, nothing too complex either. All I used were some small files, soldering iron for the solder, hot glue gun for the hot glue, scissors, a pair of pliers (Because I don't have wire strippers), and an x-acto blade.

Step 2: The Bottle

For the lamp, I used a simple plastic bottle. To make it look nice though, I needed a round bottle, without any ridges. Many drink brands are in this type of bottle. Smart water and Sparkling ICE are the two obvious ones. Some other drink bottles may also have this shape but don't get a bottle that is too big.

I chose the Sparkling ICE bottle over the Smart Water bottle because it was lighter and at the same dimension ratio I wanted. If you want a wider lamp, go for it. Your choice, as long as the bottle is round and light for a cardboard box to support easily.

To begin with, remove the label from the bottle and be careful to not make any dents in the bottle. You will probably get a sticky residue left by the label, and here are ways to get rid of it:

  • Simply rub it off
  • spray with non stick spray and wash later with soap
  • use rubbing alcohol
  • use WD-40 and then wash off with soap

I'd say that the non-stick spray method works the best for me but it also would depend on the type of glue that the manufacturer used on the bottle.

Anyways after that, put aside the bottle for later and get the paperclip out.

You will now need to make a small hole in the cap of the bottle. It must be able to spin freely on the shaft of your mini-motor (without the gear), but not leak water out. to do so, bend the paperclip straight. Next, heat it over an open flame and make a small hole in the exact center of the cap. next use a pencil or a tapering rod to widen the hole until it is just enough to spin freely on the motor shaft. This will keep from water leaking out of your lamp, if done right that is. Don't worry, there are other ways to seal the lamp too. On to the next step.

Step 3: The Spinner

To begin making the spinner, you will need to take the small gear off the motor first.It should already be off after you used the motor's shaft to test it in the previous step.If not, here is how you should take it off:

  1. Do not use needle nose pliers. The pressure they put on the gear can easily break it.
  2. Get a thin object like a blade or the edge of a metal ruler
  3. Slide it under the gear
  4. pull up and the gear should pop off.

One you take the gear off, take you foam plate and make 4 symmetrical rectangles. The dimensions aren't set in stone because cap sizes and gear diameters vary, and also because the spinner will be able to form a tornado even if it is a bit smaller. For now though, make the rectangle's width half of you cap's diameter and the height the same as you cap's.

Next, use hot glue to position the rectangles on the gear in a + pattern. Make it as symmetrical as you can- this will reduce vibration, noise, and will make better tornadoes when it spins underwater. Also, It is fine if the rectangles extend from one end of the gear, but they must not go beyond the other end. If done properly, the gear should still be able to fit flush with the motor on the shaft. You can see an example of this in the second picture, where only one end of the rectangle goes past the gear.

Also, to secure the foam rectangles into place better, I like to put a bead of glue directly on the gear in between all the foam pieces. You don't have to do this, but it may save you the effort of doing so later in case it breaks. So far with this technique, my spinner has never broken.

Step 4: Put the "spin" in Spinner

What is the point of a spinner if it doesn't spin right? In this step we will put together the working spinner assembly.

To do so, start off with your mini motor. Using sandpaper, make scratches all over the front end and edges of the motor and bottle cap. This will help stick the bottle cap on later and will prevent water from leaking out.

Speaking of which, grab the bottle cap with the hole from before and make sure it spins freely on the motor. If it doesn't, no worries; you can widen it easily. If it a bit too loose on the motor, then you might have a problem. I will discuss how to waterproof it better in the next step.

Using hot glue, stick the cap on the front of the motor, but make sure you don't glue the shaft and it is still able to spin. You can see this in the third picture. Now to waterproof it, put PLENTY of hot glue on the motor and cap. You can see how mine turned out in the fourth picture once I had waterproofed it.

Waterproofing is the most important step here and chances are, you will end up coming back here to waterproof again. Here are some tips to making a tight seal:

  • make sure you glue gun is fully heated up.
  • make sure there are no air pockets when you stick the cap on.
  • make sure you have made scratches wherever you will be putting hot glue
  • make sure you allow the glue to cool down completely and then five minutes more to be sure.

Step 5: Testing for Leaks

To test the spinner, first make sure the bottle cap can fit on the bottle. If the foam pieces are a bit too big, simply trim them evenly and then attach the spinner to the motor shaft. Then fill up your water bottle with water, leaving some space at the top for air. Twist on the cap from above, and flip the whole thing over. Check for leaks now.

In case you do see a leak, use a marker or a pencil to mark where the leak came from and using the troubleshooting steps in the end of the last step, you can waterproof the spinner again.

In case you do not see any leaks, go ahead and hold a 9 volt battery to the two terminals. The motor should start spinning and you will see a tornado start to form, and finally touch down on the bottle cap. When this happens, the motor might speed up. This is normal and happens because of the air in the tornado. On top of this, you might see smaller bubbles swirling around like debris around the bottom of the tornado, making it seem realistic as well.

Once you have made sure it is waterproof, you can move on the next step.

Otherwise you can try this simple solution I came up with:

  1. Carefully remove the spinner off the shaft
  2. Using the foam plate, make a small foam disk that can fit inside the cap.
  3. Make a tiny hole for the shaft, but make it a little smaller.
  4. Using PVC cement, glue the disk to the bottom of the cap. Don't worry if you get cement on the shaft itself, that is what we want to do.
  5. Turn on the motor a bit. This will move excess cement off the shaft by itself.
  6. Wait for the cement to cure/dry/harden/whatever. In the meantime, you will notice the foam plate dissolving into a sticky gray substance. Once it hardens up, it will become rock solid.
  7. Turn the motor on again and check if it spins.
  8. Place the spinner back on the shaft and check for leaks again.

Step 6: Creating the Base

To create the base, start off with a box that has a at least one dimension similar to that of you arduino. We can cut the box to match the other dimension.

As you can see in the first picture, the length of my arduino is the width of the box. Using a pencil and a ruler, mark a line at where the box needs to be cut. It helps to make the line all around the box as it is easier to cut that way. Also, make sure you leave a small amount of room extra while cutting the box - about 1 cm should do.

The second picture is the cut box with the arduino on top. This is the perfect shape I need, except there is a side missing!

Using the leftover cardboard form the other half of the lid of the box, I traced out a side plus about one inch. This one extra inch will be what allows the side to attach securely to the lamp base. To attach it to the lamp base, first make a score along the line where you will bend the side, which should be one inch from the side assuming that's the amount of extra cardboard you cut out. In picture 4, I used a scissor to make the score because I felt an x-acto might cut completely through the cardboard. Remember, the score it only there to help the cardboard bend.

To attach the side panel on, hot glue the extra one inch to the inside bottom of the lamp base, picture five. You can then bend the panel along the score and hot glue the edges of the lamp base to complete the box. Make sure the box's lid can still fit on. (the lid of my box opens outwards, you can see how this works if you look at the fifth picture)

Step 7: Add in the Arduino and Spinner

The first picture shows that my arduino doesn't fit in perfectly into the lamp base. This is a good thing. The reason it doesn't is because the USB and the power components are jutting out. At the back of the lamp base, make a mark with pencil so that you can cut out holes for the arduino. Nothing too fancy, I just eyeballed it (second picture).

Using the x-acto blade, i made the holes and verified that the arduino can fit well in the bottom of the lamp base. As you can see in picture three, the arduino sticks out a little. This will allow us to upload code to the arduino and then simply plug it in from then on to turn on the lamp.

As for the motor and spinner, I found the exact center of the lid and traced out a circle for the bottle cap. Once I cut it out with an x-acto, I hot glued it into place. To make sure that you are not tilting the motor, attach the (empty) bottle to the spinner and make sure it points straight up. Reinforce the spinner assembly with hot glue from the inside as well.

Also, in the fifth picture, you can see how much I ended up trimming the foam rectangles. It may seem that this is too small but hey, it works!

Step 8: Add in the Lights

There are different ways you can add in you lighting. For example, I have traced out a pattern for a hexagonal light pattern on the lid. To poke out the holes, I used a wooden skewer. Just try not to damage the lid too much.

I went ahead and decided that I will add in four LEDs, in a square configuration. I have no idea why I decided on make it diagonal, but it does look kind of cool once the outer finish is completed.

To make things easier for yourself, find the common leg of each led. This is where what we will connect to the 3.3 volt pin on the arduino.

Step 9: Wiring the LEDs

Ok I will admit beforehand, the way I wired the LEDs wasn't the best way. First off, they are wired in parallel so there was no point in me attaching the fourth LED back to the first one in the first picture above. I guess I just did it for symmetry but considering this job takes a while, I recommend against it. I actually realized I could have saved myself 1/4 of the effort while I was writing this instructable... oh well.

Anyways, to wire the LEDs in parallel, start off connecting all the negative pins of the led to each other. To do so, all I did was cut a small piece of wire and hook it on to the leg of the LED. After this, I used solder to make it stay in place. After this, I wired the red pin. A trick to find out the red pin is simply wire the only pin on the edge of the LED that is also next to the negative pin. That way even if your LED is glued in place backwards, you can find the red pin. Next connect all the blues, which are the other edge pins, and lastly all the greens.

It is critical that you make sure that none of the wires that shouldn't be touching are away from each other. To make sure of this, I just added hot glue on all the points which I soldered - another bad way to insulate wires but as someone with zero electrical experience, I think I did okay.

Next I soldered the a yellow arduino wire to the negative terminal of a LED. A red wire for a red LED leg, green for green, and blue for blue.

Next attach the yellow wire to the 3.3 volt in on the arduino, the red one to analog pin 2, green on 3, and blue on 4. If you want to test out the lights, you can also do so by plugging in the arduino with a USB type B and then hooking the color you want to test to a ground pin.

You will also want to hook up two wires to the motor. It doesn't have to be arduino wires like the ones I used, but I had them just to see if my arduino can support it with the 5 volt pin, which it can't. No worries, we can fix that on the next step.

Step 10: The Motor Circuit

Ok so here was where I came across a major problem. The arduino can support the motor, or the LEDs, but not both. To solve this, I will need to make a separate circuit. This also allows us to keep the lights on, keep the tornado on, or both.

If you wanted to, You could use a NPN or a PNP transistor to control the motor, except I don't have experience with transistors. Besides, I was unsure if the small transistor I had would handle the voltage that I will be providing to the motor. To be safe, I wired the motor directly to the 9 volt battery using a slide switch.

To do so, attach on of the wires of the 9 volt battery clip to the slide switch. Then attach one of the wires from the motor to the other side of the slide switch. Finally attach the last motor wire and battery clip wire together.

As you can see in the third picture, the battery and the switch fits perfectly on top of my arduino.

Speaking of which, just make a rectangular hole where you will put the switch and hot glue the switch in place. Make sure the slider can still move once you have secured the switch on the lamp base.

Also, I wanted to be able to adjust the speed of the tornado so I tried wiring in a potentiometer. It didn't really give me enough precision to control the speed of the motor. Perhaps a voltage regulator might work but I didn't have any. Also on top of that, the potentiometer make sparks here and there which created a minute amount of smoke, so that idea was out the window already.

Step 11: Outer Finishing

To make this lamp to aesthetically pleasing, I got some thin wood boards. As you can see in the first picture, they are thin enough to be cut by an x-acto blade, although that is also the reason why I accidentally messed up twice, wasting a total of three boards :(

However, it was definitely worth it since it looks much nicer than cardboard. All I did was eyeball the dimensions and mark a line where I will be cutting the wood. Next, cut the panels out with an x-acto knife and hot glue it in place. Make sure you do not bend the board as you glue it.

If need be, you can also double check measurements with a millimeter ruler before attaching the board. I also used the ruler to make out precise holes for the switch and USB cable on the back panel (last picture).

As for the top, I used the ruler again to cut out a hole that for the LEDs (last two pictures)

I sanded all the rough edges I cut with sandpaper and made the exact edges of the hole for the top panel using a small file, although sandpaper can work here too.

Step 12: Programming the Arduino

At this point, we have a tornado maker. Now to add in lights. I have already written up the code for you! Just copy and paste this into the arduino program software and upload to your arduino:

void setup(){
pinMode(4, OUTPUT); //blue pinMode(3, OUTPUT); //green pinMode(2, OUTPUT); //red } void loop(){

analogWrite(2, 255); analogWrite(3, 255); analogWrite(4, 255); //all off int d = 100; // delay between each color fading in or out. // This delay times 2.04 is the exact number // of seconds one full cycle will take. for(int a=255; a>0; a--){ analogWrite(2, a); delay(d); }//fade in red for(int a=255; a>0; a--){ analogWrite(3, a); delay(d); }//fade in green for(int a=0; a<255; a++){ analogWrite(2, a); delay(d); }//fade out red for(int a=255; a>0; a--){ analogWrite(4, a); delay(d); }//fade in blue for(int a=0; a<255; a++){ analogWrite(3, a); delay(d); }//fade out green for(int a=255; a>0; a--){ analogWrite(2, a); delay(d); }//fade in red for(int a=255; a>0; a--){ analogWrite(3, a); delay(d); }//fade in green for(int a=0; a<255; a++){ analogWrite(2, a); analogWrite(3, a); analogWrite(4, a); delay(d); }//fade out all }

The code above is for common anode LEDs. If you want to change up the program, such as changing how fast the colors cycle, you can edit the code easily. I have added in comments that should make it easy for a novice to programming to understand the basic function of my program. Also, above the code looks kinda messy but if you copy and paste it into the arduino software, it will look normal.

Step 13: ENJOY!!!

Add water into the bottle, plug in the arduino, place on a corner and enjoy!

The pictures above shows that the arduino cycles through the colors Red, Orange, Yellow, Green, Blue, Purple, White, and turns off momentarily before going back to Red. See all the pictures there... they look really nice. (sorry the white one is blurry though)

I did realize that my motor leaked water very slowly, for which I'm going to try and seal with silicon. If I make another version, I might find a way to power the motor through the arduino or a separate USB cable- which you can do with this version too if you want. Just find a spare USB cable, cut the outer covering, and wire the red and black wires into the circuit as if they were the two terminals of the battery.

In the meantime try out these other ideas I had:

  • Using dry ice to make a tornado out of fog
  • Use Tonic water and UV LEDs for a glowing effect.
  • Take out the spinner and just keep it a nightlight!
  • Take out the lights and keep it a tornado!

Anyways, this build was a very fun one and I will try to make a better version if you guys enjoyed this. This instructable was originally meant for the make it glow contest, but I thought it would fit on arduino and the FSL contest too - the arduino contest since it uses arduino, and the Full Spectrum Laser contest because I could have used a hobby laser to make my lamp base. This shows that I could put a Laser cutter or a 3D printer to great use. If you agree or simply like this project, please vote for me and give me any feedback in the comments below. Thanks for all you time!

Rainy Day Challenge

Runner Up in the
Rainy Day Challenge

Full Spectrum Laser Contest 2016

Participated in the
Full Spectrum Laser Contest 2016

Arduino All The Things! Contest

Participated in the
Arduino All The Things! Contest