Initial testing of LED stairs at work. Just for fun.

(dalemorris164) #1

Initial testing of LED stairs at work. Just for fun. Any ideas for patterns appreciated, it’s quite hard to get the imagination flowing due to the layout. Big thanks to the makers of the library for making this possible. Next to add some interactivity with walking up / down them with LEDs following…

(Andrew Tuline) #2

Have you Googled for demos/examples? There are a LOT out there.

(Jeroen van Dorsten) #3

Very nice! Super cool showstairs!

(Chris Parton) #4

Brilliant! You’ve done a great job mounting them! I assume you have access beneath the stairs to run the wires?

I made an interactive staircase earlier in the year: It uses cheap lasers and photoresistors to detect which stair (s) are being stood on. When I get time I’m going to experiment with using IR LEDs and detectors instead of lasers.

I wasn’t able to drill holes all through my stairs, so my wiring is awfully messy, but it was only a temporary project.

If it’s of any interest to you, all my code is available in the description, and the part 1 video goes into more detail on how they were made.

Keep up the awesome work, I’m looking forward to seeing how your stairs progress :slight_smile:

(Ira T) #5

Maybe be a “stairs on fire” theme?

(Bruce B) #6

Looks awesome!
I am working on a similar project. any chance you might share your Arduino code? I have been running on DemoReel100 for several weeks as I try to figure out how to make different patterns… :slight_smile:

(dalemorris164) #7

Thanks for the kind comments everyone!

@Ira_T Yes I tried to make 3D fire but I think at the time the pixels weren’t mapped out properly so it looked pretty bad. I’ve yet to try it again now they’re mapped properly. I might also try 2D fire going sideways that may look good.

@Bruce_B I’m running this on an ESP32 module so I doubt it would compile for an Arduino board. The code is a mess at the minute so once I tidy it up a bit I will post.

@Andrew_Tuline yes I have all of your demo examples saved to file and go through them time to time. But for this project I have been trying to use my imagination and limited math skills. Thanks for reminding me I will try some of your demos out on Monday. Think I recall one called breath pop? Or something like that, that may be effective on this setup actually :slight_smile: can’t wait to get back to work now - (wishing the weekend away :wink: haha)

@Chris_Parton Yes underneath the stairs was just storage so I cleared a bit of it out and bolted my 2x40A supplies underneath :wink: - your stairs look very effective I like that they follow you up step by step. I’m going to aim for that next, but can’t get the access to have a sensor on every step :-1:t3:. I may have to come up with something else…

@Jason_Coon thanks for making this all possible with your feather adapter board, and thanks for that advise over email :slight_smile: your a gent, sir! Next stop - web server! :+1:t3:

@Aaron_Liddiment I wonder if I could get some help from you please dude.
I am just starting to use your brilliant LEDMatrix library, however because of my weird setup, I’m struggling a little bit.

My strips are all different lengths all the way up the stairs. Some are 53, 54 and 55 pixels long. Don’t ask why but that’s just the way the cookie crumbled :). I have them grouped in sets of 2 steps wired in parallel back to the ESP32 + feather adapter made by Jason coon.
So that means I have declared them with multiple FastLED.addLEDS lines in sequence. I initially started using a CRGBArray (and CRGBSets) so that’s how they were declared in setup.

So I have made a remapXY function to swap from the new ledsMatrix array XY locations, back over to the leds array before the show() function. As I have mapped all of the pixels to an XY grid, all pixels outside the range of NUM_LEDS just keep going up sequentially.

This works fine for LEDMatrix, but not for LEDText for some reason. The letters look all out of place and are unreadable. What I am trying to get at is…is there a way to exclude these extra NULL pixels when using scrollingMsg.UpdateText() - as they are declared as a matrix that is 55x16…

#define MATRIX_WIDTH 55
#define MATRIX_HEIGHT 16

So in short, the virtual matrix of 55x16 is being used to create a scrolling array of text, but when mapped to my actual array of a width of not always 55, some pixels are out by 1 or 2 positions, and the text is unreadable. Sorry for making that question so long winded, but I don’t have my code to hand at the moment and I was trying to explain it from memory. I will upload my code as soon as possible for you to have a look through.

I have a stretch goal to integrate LEDText into Jason’s web server code, so you can type your text into the server and have it scroll across the stairs in realtime.
Anyone else wrote any code for this yet?

Thanks for any help offered.! I will try and TeamViewer into my work PC so I can grab a copy of the code.

Cheers for reading

(dalemorris164) #8

@Aaron_Liddiment - here is the gist so you can look at the code…

(Jason Coon) #9

Looks great!

(James Smirniotopoulos) #10

Wonderful!!! Thanks so much for sharing!

(James Smirniotopoulos) #11

How many LEDs total? Arduino or MEGA? How many amps is your power supply? How are the LEDs connected? As a Matrix, one row for each step?

(dalemorris164) #12


870 at the minute, soon to be just under 1000. The bottom two steps aren’t connected yet as I only have 8 level-shifter outputs on my controller.

I’m using an ESP32 (Adafruit feather)

2x40A 5v supplies

Connected in 8-way parallel with two steps per output. Non-serpentine.

(James Smirniotopoulos) #13

Thanks so much for the details! Did you compile using the Arduino IDE?

(Mike Katchmar) #14

Looks really clean. My wife would kill me. I guess I’ll have to try to outlive her!!

(dalemorris164) #15

I have a strange flickering on the LEDs when I enable wifi :thinking:…even when I’m not doing anything with it.

If I do a wifi.enable() in setup and then run the FastLED code as usual, I get flickering on some of the strips (mostly at the end but can appear anywhere on the strip). When I comment out the enable() I get no flickering and silky smooth animation.

All I want to do is collect the time from an NTP time server, and map it to the stairs width based between 9am-5pm… so I have a gauge on how long it is before end of day tinker time :slightly_smiling_face:

Bare in mind the strips are running in (9x) parallel with only ~110 LEDs per strip, I don’t think that amount of pixels would be mess with any wifi interrupts or vice versa. Unless it’s just simulated parallel instead of true parallel. When uploading I get a warning that it’s not using hardware SPI, but bit banged output instead. Even if I disable interrupts before I include the FastLED library, I still get the flickering.

@Sam_Guyer - I’m using the most recent Master branch which now includes your RMT code, any suggestions?

@Jason_Coon I know you use the web server quite a lot so have you ever experienced this issue on ~1000 pixels total? I’m now using 9 outputs, the last is soldered directly to pin 21.

Any help is much appreciated. :+1:t3:

(nwestwind) #16

This is amazing! Great work!!

(Jason Coon) #17

@dalemorris164 I just tested with 800 LEDs (100 x 8 outputs). I think I’m seeing something similar. It’s not terrible, just a slight flicker. You’re using the pins run through the level shifter on the featherwing, right? 12, 13, 14, 15, 27, 32, 33, SCL? What other pin are you using?

Hopefully this is just a small software library glitch that can be worked out. :slight_smile:

My understanding is it’s true parallel output. FastLED does not support hardware SPI, on either the ESP32 or the ESP8266.

(dalemorris164) #18

My flicker is very noticeable and after a while it causes a watchdog reset and the whole thing freezes up mid pattern :thinking:
Will do some more testing when I get the chance.

Yes I’m using those pins (but they weren’t in that order) plus pin 21 soldered directly to the bottom of the adapter.

Yes hopefully it’s just a glitch which will be sorted in a future update. I might try lowering the FRAMES_PER_SECOND variable to see if slowing down the output rate helps them both cooperate better. I’ve got it set to 120fps at the minute, so I will try that tomorrow in work.

Thanks mate