Introduction: How to 'bling' Up a Boring Staircase

Well why indeed, Well why not!

This project has 2 distinct appeals to me.

1) For me, it does jazz up a very plain area of the house. It also does it in a way that is unique (I'm not aware you can buy this sort of thing from the local hardware or electronics shop - not yet at least),

2) There is a practical and safety element too here.

Practical - The hall and stairs a frequently used but only need to be lit whilst you walk up/down them. You can switch the lights on and off each time but even the energy miser that I am I forget sometimes to switch the off only to realise hours later that they are still on.

Safety - As this system is automaticaly switch on via passive infra red detectors (PIR), it might save a fall down the stairs at night if, either you risk walking down with the light off or someone unfamiliar with your house stumbles down because they can not find the wall switch for the lights

In this regard this project could also be installed in other 'traffic' areas of the house, particularly dark corridors whith little or no natural light.

Step 1: Safety Notes

Whilst all the circuits you need to wire and construct are 5VDC and (as such are catagorised as extra low voltage) you are ok to work on a project like this with no electrical license. However I would point out the following notes:

1) You will need to get that 5VDC from a power supply connected to the mains. The easiest is to use a power supply with an already terminated plug. However, I decided to wire my system directly to a lighting circuit as it was the most convenient power (closest) to suit my needs. Get help with this step is you are not confident or competant - mains electicity can be a killer!

2) The DC ampage (amount of current) for this project is not insignificant. Make sure the 5VDC cable has conductors of sufficient cross section (thickness). A cable that is too thin could heat up and potentially cause a fire, although this is a worse case scenario I thought should just mention it.

Step 2: Tools and Skills

I have tried to make this project achievable by the typical DIY person. Most of the project is to wire together bought components and construct a fairly simple DC circuit. The most challenging issue is to get access to install the wiring in and around the stairs, in this regard, the higher your skills and patience are the better the outcome
will be.

For the Wiring:

Soldering Iron - only a low skill level required.

Drill - to drill holes in stairs for wiring.

Wire cutter/stripper

Crimper and spade terminals for wire terminals - depending on how you terminate to the small control board

Multimeter - not absolutley necessary but an invaluable part of your toolbox if you plan to do more projects of this type!

Terminal screwdriver

Hammer - for cable clips

For Arduino:

You will need a computer with a USB connection and the Arduino IDE loaded.

Arduino IDE

Programming skills - not really required if you just download my pre-prepared program. However the more familiar you are with Arduino the easier this instructable will be to understand and you could modify the lighting schemea and or timings.

Step 3: The Basis of the Project, an Adressable LED

Rather than use the common type of RGB (Red, Green, Blue) LED strip, this project uses a strip utilising WS2821B LED's. These LED's which come in a 5050 package (thats 5mm x 5mm square), have an additional 'inteligent' chip incorporated into each LED which allows it to be switched on independantly of the other LED's in the strip. This allows the user full, open and flexible control of the light and colour which is in stark contast to the sometimes garish FLASHING that LED strips can sometimes feel like.

I've added a PDF datasheet for the LED but this is just for your further interest and you do not need to read it to complete this project.

Step 4: The Circuit

Here is a Fritzing circuit diagram. I had to improvise the PIR parts as they are not in the library, I hope this does not cause any confusion.

Step 5: Powering the LED String

The LED chip string chosen for this project requires a 5VDC power supply. The current draw for these strips at full blast (RGB all on, eg white in colour) and at full brightness is as follows:

30LEDs/meter ~9 watts ~ 1.9amps @ 5VDC

60LEDs/meter ~18watts ~3.8Amps @5VDC

There are strips with higher number of LEDs/meter, right up to a whopping 144/meter but I think that that is a tad over the top for a bit of ambient background lighting such as this project.

I decided early on to use the 30LEDs/meter strip and as my staircase is 3.9 meters long I can expect the system to draw:

3.9 x 1.9 = 7.4Amps - thats quite lot. However, for the most time the strip will be running at much below this maximum but the system should be designed to cope with this peak current.

With this high ampage requirement comes 2 issues:

1) 5V power supplies at 10Amps (or 7.4Amps) are not as common as you might hope. I ordered one to come from the same e-bay supplier.

2) The issue of volts drop on:

a) The LED strip. If 5VDC is just inputted at one end then there will be a drop in volts due to the resistance of the thin copper strip. The reccomendation is to only power strips from one end for lenghts up to 1 meter. To remedy this I propose to power the strip in 2 mid points, 1 meter in from each end.

b) The 5Vcable itself. The choice of cable is also important to enure that the it has sufficient current carying capacity.

I will deal with both these issues in the next 2 steps.

At the end of this project I will check and verify these figures. See a later step.

The LED strip I purchased came from e-bay

e-bay link for LED strip

Step 6: The 5VDC Power Supply

Hmmmm so I'm needing a 10Amp power supply.

The options are:

1) The E-bay supplier offers one.

e-bay link for 10A 5VDC power supply

In the end I did not use it in this project as I got hold of another one for free!

2) Here is a link to a frame style power supply, This should be installed in a project box/enclosure which is fine as we will need to have an enclosure for the Arduino, it will just need to be much bigger.

Frame style power supply

3) "double up" smaller (less capacity) power supplies - I personally don't like this solution but it should work.

4) A bench top power supply - ok for a temporary set up but not really suitable for a permanent installation.

Step 7: The 5VDC Wire and the Wire Routing Scheme

This sounds complicated but is actually quite simple.

I've choosen this wire which I obtained from the local hardware store. It is twin 1.5mm2 stranded copper wire in a white PVC sheath.

1.5mm2 Twin Core Cable

The resistance for this wire is rated in the documentation from Olex as 13.6Ohms/km = 13.6/1000 = .00136Ohms/meter. This is the rating for DC use at 20DegC.

If I were to run 5VDC for 5 meters then the volts drop would be (using Ohms law where V=IR)

V (volts drop) = I(current)xR(resistance)

V = 7.4 x .00136 x 5(meters in length) = 0.05V which is nice and low = ok

This is ok but I also understand that for these strips that if you feed in the power only at one end then the LED's at the other end will be dimmer.

To get around this issue you can feed in the DC to multiple points on the LED strip - as per the diagram above

Step 8: Install the 5VDC Wiring

If you have access under the stairs as I did it makes the installation much easier. If you don't I suggest you hide the cabling along the edge of the carpet and find a location for the controls at either the top or the bottom of the stairs. The location of the nearest 240/110V AC power will probably dictate the best location.

Install the 5VDC wire to the 2 locations on the stairs.

  1. Pull the carpet to one side to reveal the staircase itself.
  2. Drill a hole in the riser and thread the wire through to the underside of the staircase.
  3. Use a couple of cable clips to keep the cable from creeping or slipping.
  4. Replace the carpet.

Step 9: Install the LED Strip

Starting at the top of the stairs lay the strip out and then fix it in a suitable position along the stair treads. In my case there was a convenient lip to hide the strip under. In my opinion it is better to have indirect illumination in this case so the more you can 'hide' the strip the better (as long as the light comes out and illuminates the treads of course)!

The strip is held in place with a combination of plastic clips and the odd dot of superglue.

Step 10: Solder the 2 5VDC Power Feeds

Now it is time to solder the 2 x 5VDC power feeds. In my case the LED strip is encapsulated in a plastic square sectioned tube so it is necessary to carefully cut a small window in this area so that you can get access to the solder pads. After soldering I covered the joint with masking tape which happily is a similar colour to the carpet and paint!

Step 11: Install the Wiring for the 2 X PIR's

2 PIR's need to be installed. One at the top of the stairs and one at the bottom. The PIR is used to detect motion in the same way tht a burgler alarm senses an intruder. The way PIR's work is that they constantly monitor the background infra red radiation (heat). When you move in front of the sensor you change the 'view' that the sensor has and an alarm can be triggered.

Littlebird Electronics link for PIR

Each PIR sensor has requires 3 wires.

1) +5VDC

2) 0VDC Ground

3) Signal wire

In my installation I used old spare cable I had in the garage, if I were to purchace cable the following cable would be suitable.

Jaycar alarm cable link (4 core)

Basically any 3 wires should be ok as the current consumption of these PIR's is very low and so there is no requirement for thick heavy cable.

Currently I have not mounted the PIR's satisfactorily. I was wanting work out the best angle to set them to before finally fixing them in position. It would be nice to have a 3D printer to make a specialised mini housing!

Step 12: Install the Light Dependant Resistor (LDR)

Install the LDR in a position where it can detect the ambient light but will not be affected by either:

1) The LED's when they turn on or;

2) Any other light that may be installed in the hallway

I installed the LDR on the outside of the stair treads - its a pretty inconspicuous position and there is no hallway light near this location to intefere with the operation.

You could omit this feature if you are happy for the LED's to work 24/7. A minor change in the Arduino program would also be required. If you do include this then you will probably need to adjust the cut in/cut out point. Again this is a simple change to the Arduino program.

Jaycar link for LDR

Step 13: The Arduino Controls

As I mentioned in the introduction this project is controlled by an Arduino. If you are unfamiliar with Arduino it is a the name given to a family of microprocessor based (Atmel AT Mega) printed circuit boards made to enable you & I to make projects that interface with the outside world.

Arduino Home Page

The software used to drive these microprocessors is based on C++ but you will not need to learn how to use this as I've provided the code in a later step and all you will need to do is download it to the board using your PC (via special USB cable).

I decided to use this Aruino board, the Arduino Pro Mini (5V 16Khz Version)

Arduino Pro Mini

This is a rather small board and in designed for use in semi-permanent installations and does not include a USB port on the board. If you are a newcomer to Arduino you may want to use a more "full Size" version such as the "Uno" or the "Micro"

Arduino Uno

Arduino Micro

As Arduino is "Open Source" you can either buy official hardware or clones from all sorts of sources. The choice is yours. I've used the one available from Sparkfun - around $10USD

Sparkfun Pro Mini

Step 14: Mount the Arduino on a Small Piece of Perforated Board

Firstly I mounted the Arduino board onto a small piece of perforated board - This allows the field wiring to be easily interconnected and the board mounted into an enclosure.

1) I added an 8 way female header from Pin 13 to the GRD pin on one side of the Arduino

2) I added 6 male pin headers to the end of the board to ease programming

3) I supported the Arduino on the perf board with 3 x 2 pin headers in these locations.

pins 10 & 11

pins 6 & 7

pins tx & rx

Step 15: Add Some Headers and Other Connections

I added 4 x 2 pin connectors onto the perf board

1) for 5VDC power input - this is to power the Arduino Pro Mini and the 2 x PIR sensors

2) & 3) for the PIR sensors

4) For the Light Dependant Resistor (LDR)

I added a 10k 1/8w resistor to act as a small current source for the LDR for the analoge input. (If the LDR has high resistance (when dark) the analog pin will be at 5 Volts).

I had the resistor already - you should be able to get one at your local electrical hobby shop - here is a link to a pack if ths helps:

Jaycar link for pack of 1/4w resistors

Step 16: The Arduino Software

Here is attached the software for the Arduino.

The software is extensively commented so should be easy to read - so go ahead and check it out.

The function of the software is as follows:

When one of the Passive IR sensors the LED's will light up in the direction of travel - either up or down the stairs

After a period of time the lights will extinguish (again in the direction of travel). The LED's then display a 'waterfall effect' for a period of time ~30 sec then fade out.

In idle the first and last LED 'breathe' to show the program is looping.

The I/O is as follows:


Pin 6 output for LED strip

Pin 10 input for PIR at the top of the stairs

Pin 11 input for PIR at the bottom of the stairs

Pin 13 output for Arduino on board LED (for debugging)


A0 for Light dependent resistor.

Step 17: Loading Up the Software From a PC

As I used a Arduino pro mini I needed to use a special programming converter to load the program up to the board.

This is what I used:

Sparkfun FTDI USB Programmer

Of course if you have choosen to use an Arduino that already has the USB connector on board (such as the Arduino Uno) you will not need this and you can go ahead and load the program straight away.

1) Connect your PC/MAC to the Arduino over USB

2) Open the Arduino program IDE on your PC/Mac

3) Make sure you pick the correct board type and serial communications port under the "Tools" menu

4) Open the file provided in the last step

5) Press the "Upload" button - you should see the tx/rx led's on the Arduino board flicker for a few seconds as the program is uploaded.

That all - you can disconnect everything now and the programme is retained on the Arduino

Step 18: The Installation Under the Stairs

I have used a small polycarbonate box and, well, in fact it was too small but I had it lying around and it just about fits!

Jaycar link for polycarbonate box

I added a fuse on the inbound 5VDC - it is currently a 10Amp one but I may reduce this later.

Jaycar link for fuse holder

I also added a 16V 3300uF electrolytic capacitor as recommended by the good people at Ladyada (they actually state 1000uF 6V or higher).

Here is a link for a 1000uF capacitor.

Jaycar link for capacitor

Step 19: Actual Current and Power Consumption

Amperage in use:

Initially, I measured the DC usage at the 5VDC input so it does not include the efficiency of the power supply itself.

1) Idle = 0.152A = 760mW

2) All on (warm white) 0.857A = 4.285W

(In testing and setting up I discovered that I did not like the LED's (Fully on at '255'. I actually used 50, 50, 30 for R, G ,B settings to give a warm white colour).

3) all on (full blast, ie 255,255,255) = 4.036A = 20.18W

(4.9A is less than I calculated in step 4, (7.4A) . I'm not sure why there is such a wide discrepancy. Any ideas?!

To do a further check I decided to test the AC current into the power supply

1) All on (full blast, ie 255,255,255) = 0.139A = 30.0W (assuming power factor of 0.9)

2) Idle = 0.037A = 7.992W (no photo)

Clearly I could have used a much smaller power supply. Given the power supply is using about 8W in idle it may be better for me to swap this out at a later date. (8 x 24 = 192Whrs/day) = 70kWhrs/Year. Depending on your cost of electricity (curently 51c/kWh for me at peak rate) will alter your opinion on this issue!

Step 20: Conclusions and Comments

So....whether you have a grand staircase with chandaliers or just a simple ladder, you can add a unique feature and get those LED's guiding your way in the dark!

As always comments and suggestions for improvements are most welcome.


kelsres (author)2017-08-05

A very big thank you to sjowett for this Instructable which I have now completed ! Being a 70 year old latecomer to the world of Arduino I found these instructions clear and easy to follow.

I worked out that I needed 98 led's for my staircase and adjusted the code accordingly.

I would be interested to see if I can change the hc-sr501 PIR's to sonic sensors hc-sr04 as the PIR's are a bit sensitive.

Once again many thanks.

daniela502 (author)2017-07-02

Hi sjowett I'm interested in your build and wondered if you was able to help me

sjowett (author)daniela5022017-07-04

I can try, what's your question?

daniela502 (author)sjowett2017-07-05

will your setup work just the same with the arduino uno?

sjowett (author)daniela5022017-07-05

Yes - Uno,Nano or Micro should be ok

daniela502 (author)sjowett2017-07-15

perfect thank you I've found some rgb led cable red blue green and black you think i will be able to use this? thank you

KOTSOS5 (author)2017-03-19

Hi I've finally made it! Thanks for the contribution. What problems I've faced was basically the PIR stuff. so i've changed these here :

1) int alarmValueTop = LOW; // Variable to hold the PIR status
int alarmValueBottom = LOW; // Variable to hold the PIR status

2) pinMode(alarmPinTop, INPUT); // for PIR at top of stairs initialise the input pin and use the internal restistor
pinMode(alarmPinBottom, INPUT); // for PIR at bottom of stairs initialise the input pin and use the internal restistor

3) if (alarmValueTop == HIGH && downUp != 2)

if (alarmValueBottom == HIGH && downUp != 1)

4) THE MOST CRITICAL! try this project in dark, because I was putting my hand in front of the LDR to raise the resistance while I had my light turned on the led strip wasn't performing how it supposed to do and while it started to work right eventually it was stopping. SO try this project at dark! I hope you've managed to solve the problem when the led strip is on and the LDR becomes <600

Kawajohn (author)2017-03-05

and so i filmed it with a gopro, doesn't work good in the dark but still...

Kawajohn made it! (author)2017-03-04

Thanks for the help Sjowett

this was my 2nd arduino project so it was a bit confusing

using the serial monitor helped me a lot

i used fast clips to put the leds i cut from the strip in and those didn't work

so i had te resolder everything

it looks very cool now!

i will make a video of it soon (still need to do little things on it) and place it here so others can see how else to use this with my changes

chestroled (author)2015-04-10

FIrst, I want to thanks you for this tutorial !

I've got exactly the same project has yours and just found this . Cool !

I start a test setup but have a little problem, I dont use the same PIR sensor than yours, I use HC-SR501 ( )

regardless of the position of the setting on the sensor, the serial terminal indicates a repeated motion detection

I think this type of sensor directly output 5v when a is triggered and then there is no need to use internal pullup ?

I've tried to modify the input type, but I can't get it to work.

I've some other question for you, I will contact you if you agree ?

Thanks !

sjowett (author)chestroled2015-04-10

Hi - I've taken a quick look at the link you provided and it looks like the logic of your PIR is the opposite to the one I choose. IE your PIR goes HIGH when detected and mine goes LOW. There should be no problem in chaning things around to suit though.

1) Rather than using the internal pullup you need to install an external 10k Ohm resister from the arduino pin to ground (this is a "pulldown" and ensures the pin does not 'float').

2) Change the program to look for digital "HIGH" rather than digital "LOW"

I think thats it.....let me know how you go!

DeanV5 (author)sjowett2016-01-07


I have just ran into this same problem using the HC-SR501.

Sorry, I'm not quite sure what you mean by "arduino pin to ground"....are you referring to the digital input pin being used (IE 10/11 in your code) and having a 10k ohm resistor connected to each pin and to the ground?

DeanV5 (author)DeanV52016-01-07

Ok, I have worked it out....

I changed the IF statements to look for HIGH instead of LOW...

if (alarmValueTop == HIGH && downUp != 2) {

if (alarmValueBottom == HIGH && downUp != 1) {

As well as chaning the PinMode to INPUT from INPUT_PULLUP

inMode(alarmPinTop, INPUT);

pinMode(alarmPinBottom, INPUT);

The second part is what stumped me.

Thanks for the Instructable!!! Awesome work!

Kawajohn (author)DeanV52016-12-28

having the same issue

but this didn't fixed it for me

also tried

int alarmValueTop = LOW; // Variable to hold the PIR status
int alarmValueBottom = LOW; // Variable to hold the PIR status

still doesn't work

sjowett (author)Kawajohn2016-12-28

Try the PIR in a little example program on it's own to try isolate the issue...

Try this one for size?

Kawajohn (author)sjowett2016-12-29

i tested it

must be something in the code...

i got the 5v in for power and i get 3.3v out, when no detection 0v

problem is i'm not so good with the code

must int alarmvalue be high or low with theHC-SR501?

int alarmValueTop = HIGH; // Variable to hold the PIR status
int alarmValueBottom = HIGH; // Variable to hold the PIR status

i use the changes from DeanV5

Kawajohn (author)Kawajohn2016-12-30

tested a lot must work

lookin over something...

there is a blue led on the arduino blinking 3 times, then 1 time a blue led next to it blinks

sjowett (author)Kawajohn2016-12-30

The led that blinks 3 times is probably the LED attached to pin 13. My program gets his to flash 3 times when one of the PIRs has triggered. Have you checked the Arduino serial window? My code prints the LDR value and then "Detected Top" or "Detected bottom", this will correspond with the led flashing 3x also

I can't emphasize enough that to isolate an issue its best to use a example program which focuses on the element you need to resolve. You can then build things back up

kadapaking74 (author)2016-10-14

Hi Simon, Thank you for sharing excellent project with clear instructions. I am trying to replicate your project with the exception of LDR (I am planning to skip LDR because I do not need light sensing). I ordered Arduino Micro ATmega32u4 and ws2812 10M/300 LEDs. For practice, I downloaded your sketch and ran with IDE (installed adafruit neopixel to the library). Unfortunately, I am getting error messages with code I copied from here. I am a newbie and your help will be appreciated. My email id is Thank you.

Kevinbritain (author)2016-07-05

Just wanted to say this is a very well executed project.. I've been searching for the past week for info on chasing and waterfall led methods for stairs.. Definitely going to break this apart and dive into this over the upcoming weeks.. Many thanks man..

MichaelM217 (author)2016-06-22

Thanks a million Simon for sharing this. I have benefited a lot from this tutorial. The Q&A section helped too. I made a prototype of this (a little different). Everything works great, but one- the LDR. I see:

"if (LDRValue > 600)"

I do not see a line that turns the leds off when the LDR value is < 600 (as in your example).

When this value drops lower than "600" (mine is 900), the leds stay on forever. How do you turn them off???

I know its been a while since this post, but your contribution is valued.



sjowett (author)MichaelM2172016-06-23

Thanks so much for such a positive response Michael - it is much appreciated!

As for the LDR value I'm assuming you mean the sequence is triggered all the time when the LDR value is set to 600.

If that's what you mean it is a bit of a problem for me too. I finished the project during the Australian summer when my hallway gets plenty of light. At the moment (in the winter as we are right now) it seems to be on all day! It a difficult juggling act as you don't want the sensor to be affected by the artificial lights in that area too. Perhaps using a real time clock module with the Arduino might be more effective in the end.

AJ240 (author)2015-08-10

What a fantastic unit. I have just built one, but I have a few questions to adapt it to my stairs. I want to run 300 leds over a 5m string. I can get the code to change the white leds to fill up the string but I cannot get the breathe leds or the waterfall to change size. I am new to arduino, so I am not sure what to change?

Can you offer some suggestions?

sjowett (author)AJ2402015-08-11

1) First change this line - 117 is the number of LED's in my string:

Adafruit_NeoPixel strip = Adafruit_NeoPixel(117, PIN, NEO_GRB + NEO_KHZ800);

2) Then set the last LED in the string to breathe on this line. Note the number is 1 less than the number of LED's in the string. This is because the 1st LED is actually LED 0 (Zero).


3) Then there are 2 lines to change to get the waterfall effect.

for(int i=347; i>-1; i--) {

and this one:

for (int k=0; k<351; k=k+3)

the 351 figure is = 3 x 117 and the 347 is 3 x 117 - 1. That's all i can remember it's been a while since I looked at it!

nodoubtman (author)2015-06-24

Hi! The strip is still white always...

doesnt change any colors..

can you help?



sjowett (author)nodoubtman2015-06-25

Hi Marc, do you see any of the other effects? IE

1) the LED at the top and the bottom 'breathing' when in idle mode

2) do the LED's light up in the correct direction?

3) is there any shimmering or change in brighness of the leds at an time?

nodoubtman (author)sjowett2015-06-28

Hi sjowett, the led is doing a waterfall effect and now they are changing breathness even when i passed out in front of the PIR's, that doesnt do nothing. any idea?

Thank You!


sjowett (author)nodoubtman2015-06-29

If you are not sure whether the PIR is triggering try loading up a simple program to test the PIR in isolation. IE try chunk the project down to its individual parts to try understand whats works and what doesn't There are plenty of Youtube videos to guid you on this subject.

The same applies for colurs on the LED string. You can load up a simple program to check the colours and play with the variables (255,0,0) or (0,255,0) or (0,0,255) to see the individual Red Green and Blue LED's illuminate.

nodoubtman (author)sjowett2015-06-28

and i am using 101 leds

sjowett (author)nodoubtman2015-06-29

ok - then roughly speaking I'd expect your LED string to be taking 101/117 x 4 amps = 3.45 amps. So your 3 amp power supply is a bit undersized for this application. Maybe this is causing a volts drop leading to other issues?

nodoubtman (author)2015-06-24

Hello! Nice project, what if i supply 5V/3A only ?

Thank you!

sjowett (author)nodoubtman2015-06-25

On step 18 I measured the power used with my set-up which was just over 4amps when all the LED's were fully on (255,255,255, or white). /this is based on 117 leds. /the question is how many led's are in your strip? If the power supply is 'maxed' out hen the leds will be not as bright as they should be and your power supply will get too warm. However, you may be ok for intermittent use but if your house burns down please don't blame me!!

sjowett (author)2015-06-23

Hi Moe - thanks for such a kind and supportive message..... and in a way messages like yours enthuse me to write up and share more projects here on instructables.

Good luck with this and any other Arduino projects you decide to pursue.

Moe Odatalla (author)2015-06-22

This is the main reason I joined instructables: Arduino-controlled staircase lighting with fade and dimming capabilities, as well as automatically detecting whether the lights actually need to illuminate based on the stairs being ascended/descended at the moment.

It's tutorials like yours that make a complete novice like myself so enthusiastic to tackle those home-automation projects, without destroying my feeble budget. Thank you!

I intend on completing this project at home within the year, and will share my pictures once completed.


mickjazz29 (author)2015-01-28

Hi sjowett,

this is a great project, and very well explained by you, thank you. I'm keen to have a go at it. Please forgive my naivety, but I'm using Arduino 1.0.6, I have added the Neopixel library and have copied and pasted your .ino, but when I come to verify it I am getting the following error compiling message:

core.a(main.cpp.o): In function `main':

C:\Program Files\Arduino\hardware\arduino\cores\arduino/main.cpp:40: undefined reference to `setup'

C:\Program Files\Arduino\hardware\arduino\cores\arduino/main.cpp:43: undefined reference to `loop'

Am I doing something completely wrong? Any advice would be greatly appreciated.

Many thanks & best regards


sjowett (author)mickjazz292015-04-10

Sorry mickjazz29 for not replying sooner - did you resolve the issue?

Sasando_Rote (author)2015-01-18

pingin coba..

yoyonanta (author)2014-12-22

ok I confess, I'm a newbie..

LED strip that you using is WS2821B, right?

can I use another LED strip for this project? I really want to try it at my house. I already got the PIRs and another stuff I'm gonna need. But I can't find LED strip precisely like you had in my country. sorry if I ask a simple question..

sjowett (author)yoyonanta2014-12-22

Hi yoyonata, Yes, this project is based on the WS2812B LED. In every LED there is a small addressable chip which the arduino microcontroller can 'talk' to. With the software this allows us to switch on each led individually and, unfortunately, the project will not work without this chip.

However, you can use a 'normal' led strip for a more simple installation but, the lights will all come on at the same time (and you will have to write a different (but relatively simple) program for the Arduino).

serge1 (author)2014-12-14

ok my pir are still missing but got the strip and promini , i am looking at your program and cant seem to find the delay to slow down the up or down ligth up

sjowett (author)serge12014-12-17

There are various timer in the program but I'll explain one which might not be that obvious. This line in the code:

colourWipeDown(strip.Color(0, 0, 0), 50); // Off

The 1st 3 numbers 0,0,0 are the RGB element, in this case "off". The 4th number is a 50 millisecond delay. The variable gets passed to the function colourWipeDown:

void colourWipeDown(uint32_t c, uint8_t wait) {

and then is used in the delay as such:


and the loop waits 50 milliseconds.

I hope this helps. If you have any other more specific delay questions I'll try answer them.

Tvixen (author)2014-12-05

Very funny and good project. I might use some of it one day. Thumps up :o)

sjowett (author)Tvixen2014-12-05

Thanks for the positive vibe!

serge1 (author)2014-11-28

trying to compile your .ino with 1.0.6 and get error

sjowett (author)serge12014-11-30

Hi Serge1 - what is the error? I wonder if you have included the Neopixel library?

you need to dowload the zip file and copy the whole folder to the Arduino/Libraries sub folder. Once Arduino is restarted the library will be included and available when you re-compile.

lpkopinionsurvey (author)2014-11-22

it would be nice if you could add video & pics of the lights on.

sjowett (author)lpkopinionsurvey2014-11-22

2 Videos are on the intro page.

I am unable to play the videos on my Android mobile. Try a laptop or desktop for the full technicolour experience!

georgesun (author)2014-11-20

Very clever project, especially with how you organized all the components around the stairs!

sjowett (author)georgesun2014-11-20

Thanks for the positive feedback - always welcome.

iam_maker_leo (author)2014-11-18

Great peoject!!!

I can use it for my home... Thank you.

About This Instructable




Bio: An engineer who likes to tinker with electronics and make stuff!
More by sjowett:Meet 'Holman' the Ultimate Bluetooth SpeakerMiniature Weather Station - ESP8266Fridge Hack -  Internal Light Conversion to LED
Add instructable to: