Introduction: Arduino Based Stranger Things Lights

Picture of Arduino Based Stranger Things Lights

We are hosting a Halloween party and since Stranger Things is on everyone's minds this year, I thought I could make a cool, creepy decoration using an arduino and some programmable LEDs

Step 1: Materials List

Picture of Materials List

Good news. No tools are required to build this instructable. You don't need to know how to solder or anything fancy.

All parts can be found on Amazon, or if you want things cheaper, you can do a little research on other sites. The parts list is:

Mokungit 100pcs WS2811 12mm LEDs

https://www.amazon.com/gp/product/B01DLVK3CE/ref=o...

DC Power Jack Adapters:

https://www.amazon.com/gp/product/B00XJ23U3A/ref=o...

5V/10A DC Power Supply

https://www.amazon.com/gp/product/B01HYXAG04/ref=o...

Arduino Uno

https://www.amazon.com/Arduino-Uno-R3-Microcontrol...

9V/1A DC Power Supply

https://www.amazon.com/ZJchao-Power-Adapter-Arduin...

Step 2: Simple Wiring

Picture of Simple Wiring

Everything is plug and play here. The only concern is what color your actual wires are. The wires I got were different colors than on the supplier's website. Once you piece together what is power, ground, and data, you're off and running.

Step 3: Get Your Creepy Font

Picture of Get Your Creepy Font

I used Something Strange from Dafont: http://www.dafont.com/something-strange.font

You will want to print these out and attach them to the wall along with your LEDs to determine which LEDs match which letters. If you want to go smaller, you can assume one LED per letter and it makes your life a whole lot easier.

When writing down which LEDs match which letters on your wall, you will want to remember that the code treats the first LED as #0, so start counting at 0 instead of 1.

Step 4: Start Programming

Picture of Start Programming

I am new to programming, so I apologize upfront for my poor coding skills. Take what you can from what I've done and improve upon it!

The first step was to download FastLED: http://fastled.io/

FastLED is the library that helps run some of the features in the code.

Second, download my StrangerThings program and open it up and start reading through my comments.

My main concept was that I wanted my program to be random. I didn't want the program to cycle through a word every x minutes and have it lose the eerie effect. This is done through the randomseed and random function paired with a switch/case scenario. Then all you have to do is set up subroutines to run within each case.

Feel free to post questions and I'll do my best to answer. Since I'm not a programmer I'm not exactly sure what to share with everyone.

Step 5: Test and Add Features

Picture of Test and Add Features

The best way I found to test was to just run the subroutines one after another without the random variable and the cases to see if you like how each one looks. When you are happy with the rates of changes and the speed of letters showing up and disappearing, turn the random variable and cases back on and you're off to the races!

Comments

bethania872 (author)2017-09-27

I'm working on this now, but I want it to be portable to bring to a party.

I have all the pieces except the DC Power Jack Adapters and the 5V/10A DC Power Supply. What would you suggest I get to power the bulbs? I already a 9v battery powering the Arduino... Would a 9v battery be enough to power those bulbs?

NickS331 (author)bethania8722017-10-25

No, a 9V battery won't supply ample power to power this for too long. The 5V 10A Power Supply would be needed for sure to allow this to run for a while.

crios42 (author)bethania8722017-09-29

I was looking into this also. I really don't know much but from my research, it looks like it can be done and you will need some kind of battery pack but you will have to figure out the voltage and watts and all that other stuff. I decided to just go with a wall plug. It was easier.

jharary made it! (author)2017-10-11

I did this last year for my friends Halloween Party. He wants me to tweak it this year to be IT themed. The idea was to string the lights all over the room and it would periodically turn/flash red. We also built a fake sewer grate with a clown head. The idea is to have white lights strobe in the grate when the lights turn red. I got pretty much all of that covered. I was curious if it was possible to have audio play when the lights go into the Horror Scene. Anyone know if that's possible?

Mousepotato01 (author)2017-10-06

For the led lights series WS28XX (WS2812b, WS2812, WS2811) if you look into the clear plastic you will see a arrowhead this is the direction the data travels so start on the end that has the female JST connector or the start of the flow. You need to COMBINE RESISTORS IN SERIES to get the 370 OHMS required by the maker of you lights or use 1 correct value if you have it in the required value. Now you can use adjustable pots (trim pots) as well buy the cheap flat ones they take less real estate on your pcb when you place all this in a project box to make it look nice and neat. I used a 12V dc battery pack from Amazon.com with the jack that hooks up to the batteries this way I power the arduino and my lights. I have this product ( https://www.amazon.com/gp/product/B000LFRTIK/ref=ox_sc_sfl_title_10?ie=UTF8&psc=1&smid=A3RILTC05JZ5YH, https://www.amazon.com/gp/product/B01AXIEDX8/ref=ox_sc_sfl_title_11?ie=UTF8&psc=1&smid=A2VN47FGA6FR8 ) I have this set (https://www.amazon.com/gp/product/B017D711IC/ref=ox_sc_sfl_title_5?ie=UTF8&psc=1&smid=A34SBYVFQXAXO2) . So this may be different for Black, Green, Green/Yellow wires. I do not know as of yet. I ordered 6 sets of 500 in each of the wire colors they arrive Tuesday 10/10/2017. Now only if Amazon did not take my shipping cost again and deliver late. But any how back to this tip. I will know more when my WS2811 arrive. I ordered them to build some Christmas outdoor decorations and some Halloween and Easter decorations. I will try to make Instructables on them but I need some help please. This is the first time I am using the WS2811 lights ever I normally use regular RGB Led's and make my own strings of whatever I need. Now I need to know of a program if any that has a rainbow fade effect to go between a pre selected color pallet, A random rainbow fade and or blink code and then one that is just solid colors in one shade with pastel colors I could use for the Easter decorations. If there is maybe a meteor shower code or a music effects code to work with the strings that would just be the perfect solution to all I need. I do not know of any of this that will work with the IC in the strings I have not researched them enough yet I only seen them for the first time last Wednesday night 10/04/2017 when I was researching Holloween items. I love this web site seriously love it. I seen this build ( https://www.instructables.com/id/Jack-o-LEDtrix/). BTW NICE JOB ON THIS INSTRUCTABLES Very well put together I only hope my decorations instructables will be half as good. I am stil editing my 3000 man hours build with videos for my ALICE:RED QUEEN build I made. That may take 2 years just to get it ready to make A instructables out of it LOL....any how it is at the stage of me building the PCB for it and assembling prototype boards to test the software I frankensteined together... I will be making this build also for a birthday party for my nephew next Saturday 10/14/2017 when I have my orders off AMAZON.COM I will post pictures and comments with twitter and facebook comments from the guests at the party. It is amazing how people react that know you your entire life and just find out you know how to do this type of stuff. PS I can not wait to get any code for music to make a mock up christmas of easter display PLEASE help out a fellow newbie programmer/coder/software engineer pre K ARDUINO EST. I tank any and all of you for any help you may lend or offer to me with this question.

jayepmills (author)2017-10-05

Another newbie question here. Since the WS2811 lights I ordered are 5v, can i just wire the power to the 5v pin on the Arduino, the power the Arduino, thus turning the whole thing on with one power supply?

DanM231 (author)2017-09-27

Hi, my light strip has 3 wires. 12v, DI (Data ?) and Ground. What do I do with the wires here. Sorry total newbie.

crios42 (author)DanM2312017-09-29

Hi Dan. You have it correct. If your wires are colored the same that mine are, blue is ground, white is data (DI), and red is power (12v). The diagram on step 2 does a really good job of explaining how to connect things. On the Arduino end of the lights, make a connection from the data wire to the #6 pin (I had to use a piece of stripped wire to do this) and connect the ground wire to a ground pin (again use a piece of stripped wire) on the arduino (I don't think it matters which one). Don't worry about the power wire on the arduino end of the lights. On the other end of the lights, you will be connecting the power for the lights. Use the two hanging free wires to connect to the power. Ground should go to the negative (-) on the power connector and the 12v should go to the positive connector (+). Make sure your connections are secure. Mine were wiggly at first and I had problems but then I figured out that I had to secure everything. I'm pretty much a noob at this too but I got it figured out and we are up and running. I'm feeling pretty proud of myself.

Let me know how I can help you.

balbert3 (author)2016-12-09

I just did this project and here is my code, kinda mix of a few others...

https://gist.github.com/byrontn/04cbe55e95603babfc12befe72045290

balbert3 (author)balbert32017-09-25

I moved to a new github account and my old link was removed. Here is the my code again. https://gist.github.com/ravenbyron/a8a09d368290158...

I put colored caps on the led's so they looked like big bulbs so I did not need to do multiple colors. You will also need to update the arrays with where the letters are on your led strand.

crios42 (author)balbert32017-09-25

Thanks for the update.

I noticed the #include Hashmap.h . I'm guessing this is the library your referring to... link.

I also noticed that on line 80, you don't precede that line with something like "myleds[25] = 0;//Z".

I'm not a programmer so I don't know if this is intentional or something that was left out. I know enough to make small changes and modifications but other than that, I couldn't write code if my life depended on it.

balbert3 (author)crios422017-09-25

I linked to a copy of the Hashmap.h (https://gist.github.com/ravenbyron/ae59cedaa1c641eb9bf306e0738dad93) I had and this is the version of FastLed I had. https://github.com/FastLED/FastLED/releases/tag/v3...



I think I didn't have a light over Z so thats why I didnt have a myleds for Z...

crios42 (author)crios422017-09-25

I also discovered that Hashmap doesn't seem to work as is from the download above. You have to go into Hashmap.h and change Wprogram.h to Arduino.h then the program verifies successfully. Now to really test it out.

egambo (author)balbert32016-12-11

I used your code and for some reason every time there is a space in my phrase, it finishes the word prior to the space just fine.....pauses....and then displays the last letter of the word before the space again and then continues on as it should... Any ideas?

egambo (author)egambo2016-12-11

#include <FastLED.h>

#include <HashMap.h>

#define DATA_PIN 6 //this is the data pin connected to the LED strip. If using WS2801 you also need a clock pin

#define NUM_LEDS 100 //change this for the number of LEDs in the strip

#define COLOR_ORDER RGB

CRGB leds[NUM_LEDS];

CRGB colors[5];

int myleds[25];

int last_letter = 0;

CRGB white = CRGB(255,255,255);

CRGB red = CRGB (255, 0, 0);

CRGB green = CRGB (0, 255, 0);

CRGB blue = CRGB(0, 0, 255);

CRGB off = CRGB(0, 0, 0);

const byte HASH_SIZE = 28;

HashType<char,int> hashRawArray[HASH_SIZE];

HashMap<char,int> charToLed = HashMap<char,int>( hashRawArray , HASH_SIZE );

void setup() {

FastLED.addLeds<WS2811, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS); //setting up the FastLED

randomSeed(analogRead(0)); //seeding my random numbers to make it more random.

myleds[0] = 4;//A

charToLed[0]('a',4);

myleds[1] = 7;//B

charToLed[1]('b',7);

myleds[2] = 10;//C

charToLed[2]('c',10);

myleds[3] = 12;//D

charToLed[3]('d',12);

myleds[4] = 15;//E

charToLed[4]('e',15);

myleds[5] = 18;//F

charToLed[5]('f',18);

myleds[6] = 22;//G

charToLed[6]('g',22);

myleds[7] = 24;//H

charToLed[7]('h',24);

myleds[8] = 63;//I

charToLed[8]('i',63);

myleds[9] = 59;//J

charToLed[9]('j',59);

myleds[10] = 55;//K

charToLed[10]('k',55);

myleds[11] = 53;//L

charToLed[11]('l',53);

myleds[12] = 50;//M

charToLed[12]('m',50);

myleds[13] = 49;//N

charToLed[13]('n',49);

myleds[14] = 45;//O

charToLed[14]('o',45);

myleds[15] = 42;//P

charToLed[15]('p',42);

myleds[16] = 38;//Q

charToLed[16]('q',38);

myleds[17] = 71;//R

charToLed[17]('r',71);

myleds[18] = 74;//S

charToLed[18]('s',74);

myleds[19] = 76;//T

charToLed[19]('t',76);

myleds[20] = 79;//U

charToLed[20]('u',79);

myleds[21] = 82;//V

charToLed[21]('v',82);

myleds[22] = 85;//W

charToLed[22]('w',85);

myleds[23] = 88;//X

charToLed[23]('x',88);

myleds[24] = 90;//Y

charToLed[24]('y',90);

charToLed[25]('z',94);

colors[0] = white;

colors[1] = red;

colors[2] = green;

colors[3] = blue;

colors[4] = off;

reset();

abcs();

}

void loop() {

//myrandomizer(60);

type("there is only zuul");

//myrandomizer(60);

type("merry christmas");

//myrandomizer(60);

type("i will get you");

//myrandomizer(60);

type("happy hanukkah");

//myrandomizer(60);

type("spank me");

//myrandomizer(60);

type("tis the season");

}

void myrandomizer(int timesec) {

reset();

int loops = timesec * 20;

for (int i = 0; i <= loops; i++) {

int id = random(0, 25);

int l = myleds[id];

leds[l] = randomColor();

FastLED.show();

delay(50);

}

reset();

}

void abcs() {

for (int i = 0; i < 25; i++) {

int t = myleds[i];

leds[t] = white;

FastLED.show();

delay(250);

}

delay(10);

}

CRGB randomColor() {

int t = random(4);

return colors[t];

}

void reset() {

for (int x = 0; x < NUM_LEDS; x++) {

leds[x] = off;

}

FastLED.show();

last_letter = 0;

}

void displayLetter(char letter) {

if(isWhitespace(letter)){

last_letter = 0;

delay(2000);

}

int lednum = charToLed.getValueOf(letter);

if(lednum >= 0 && lednum <= 99) {

if(last_letter == lednum){

delay(2000);

}

leds[lednum] = white;

FastLED.show();

last_letter = lednum;

delay(2000);

leds[lednum] = off;

FastLED.show();

}

}

void type(String message){

reset();

message.toLowerCase();

for(int i =0; i< message.length();i++){

displayLetter(message[i]);

}

reset();

}

balbert3 (author)egambo2016-12-11

Not sure it worked great for me, maybe try commenting out the toLower() line...

Fizx_Guy (author)2017-04-12

This project is great...so I'm trying to create my own version. Basically, I have a linear string of 37 LEDs with the intent to have a place for A-Z, a space, and 0-9 all represented. I've tried to modify several existing codes but to no avail. I'd love to be able to have it spell out different alphanumeric strings as well as run random lights, chases, flickering, etc; not to mention color variety. Any code help would be appreciated. Thanks!

CaseyWoodland made it! (author)2016-12-21

Our developers made one with arduino, here's how they did it:

http://www.woodlandmanufacturing.com/articles/news/how-to-make-a-stranger-things-alphabet-sign-with-lights-code/

KFull1 (author)2016-12-18

I keep getting an error code saying:

In file included from C:\Users\Lorraine\Desktop\ST\FOZHJ9WIUDWFP1W\FOZHJ9WIUDWFP1W.ino:3:0:

C:\Users\Lorraine\Documents\Arduino\libraries\HashMap/HashMap.h:33:22: fatal error: WProgram.h: No such file or directory

#include <WProgram.h>

I've seen things online saying that I need to change wprogram.h to arduino.h, but I have no idea where to do that. Please help!

drfresh (author)2016-10-24

Hey bxl4662. This was an amazing idea and you did a great job! I took this a bit further, and added a Raspberry Pi into the picture. The Pi runs a web interface where users can send their own messages to the arduino (to do this I had to wrote some functions to be able to dynamically generate the messages from strings, but I used some of your cool CHRISTMAS, and LOWREDUP effects!).


I'm still not 100% complete with everthing, but here's a functioning demo:


And my code:https://github.com/dfresh613/strangerLights

For anyone looking to dynamically create messages from strings (not have to setup every LED for every message), use my displayMessage() function!

GregF15 (author)drfresh2016-10-27

Thanks both for all your work! My first time playing with Arduino, and got it to work.

drfresh, can you send me a shopping list for raspberry pi components so I can learn how to add your functionality into the project? Thanks!

drfresh (author)GregF152016-12-04

All you need is a basic raspberry pi. Preferably a model with built-in wifi so you can access the web interface from anywhere on your network.

Davinci2K1 (author)drfresh2016-12-03

@drfresh BRILLIANT. I am having all kinds of challenges getting Django ( and python ) running on my Pi. ( I am able to SSH in, and do most installs - but config kills me. Might just have to give in and learn how to use vim :-( Nano I can understand.

EmilyD70 (author)2016-10-19

Has anyone in Canada found an alternative to the LED strip used in this tutorial, since Amazon won't ship it here? :(

Davinci2K1 (author)EmilyD702016-12-03

I have purchased two strings of WS2811 LEDs from Amazon.ca
http://a.co/7jUoEHR (a Prime seller, too!)

I've got the Arduino part running perfectly for 100 ( 2 x 50 chained together)

But, have struggled with @dfreshes Raspberry Pi web interface ( installing Django on my Raspberry Pi has been very ... challenging.

RollyD1 (author)2016-12-02

ive done the project. now i was wondering is it possible to make the LED light or follow some music beats?

gilesw3 (author)2016-11-25

Hi there. I am struggling to get this to work and wondered if somebody could please assist me? I have the Arduino Uno connected to my laptop. I have the Fast_led library activated and the above coding added too. I can upload it to the UNO (TX and RX are flashing). The problem appears to be with my LEDs and the power. They are WS2811 with a white data cable, a red 5v wire and two blue grnd wires.

Whenever I connect my 5V charger the lights blink once then go out. I have connected the white wire to pin 6 and the second blue grnd to the uno. The red and blue wires are connected to the 5v power source.

Any help would be very gratefully received.

bxl4662 (author)gilesw32016-11-25

It sounds like the lights might be wired in reverse. Look at the little circuit board attached to each led. It has an arrow on it pointing in the direction it should be set up. For a quick test flip them around and re plug it all in and see what happens.

gilesw3 (author)bxl46622016-11-26

OK thanks for that. I've now reversed them and the same is happening. When I verify the code I get this message for Fast.LED

In file included from C:\Users\Giles Wallwork\Documents\Arduino\libraries\FastLED-3.1.3/bitswap.h:4:0,

from C:\Users\Giles Wallwork\Downloads\FOZHJ9WIUDWFP1W\FOZHJ9WIUDWFP1W.ino:1:

C:\Users\Giles Wallwork\Documents\Arduino\libraries\FastLED-3.1.3/FastLED.h:17:21: note: #pragma message: FastLED version 3.001.003

# pragma message "FastLED version 3.001.003"

^

Is this something that might be affecting it?

Thanks

gilesw3 (author)gilesw32016-11-27

Well that was odd. All the coding was right and the wires were all set out ok however I changed the output data pin from 6 to 7 and it sprang to life. Plus as I was using 50pcs WS2811 I simply went in and deleted all the lines of code pointing to LEDs above 50. Hey Presto it works a treat. Cool

nextjenn (author)2016-10-24

So I just dug out my Arduino to try this and I'm a bit rusty (and was never really good), so sorry if this is a dumb question. But I've uploaded the code and have my lights attached to the Arduino (and Arduino attached to my computer). How do I run the code? Should it just be doing something automatically?

bxl4662 (author)nextjenn2016-10-25

No worries! There are a few things I think you are missing. First, you have to make sure you download the FastLED library. You can download it from the website in my instructable. Once you download it you need to go into arudino and then to Sketch>Include Library>Manage Libraries and pick the folder that you just downloaded.

At that point you have the necessary library to run the program that I wrote. Next, you didn't mention power. Do you have a power supply for the LEDs? (Sorry if these are dumb things you've already done) If you aren't powering the LEDs from a separate supply, you can maybe power a few at a time from the arduino itself. However, if you try to power more than 6 or 7 at once, you are going to max out the arduino.

There might be a few other things that need worked through as well. Feel free to post additional questions here or send me a message!

nextjenn made it! (author)bxl46622016-10-25

Thank you for responding, bxl!

Here are a few more tidbits.
-It needs to be portable (no outlets where it will be hanging)

-So I'm using a 9v battery to power the Arduino.


-I'm trying to use a battery holder to power the LED lights. I think this may be where I'm having trouble. I was hoping to use a 4 AA Alkaline battery pack with a diode to power this. But now I'm wondering if this wouldn't work? (I've unconnected for now until I'm sure it won't burn out the LED)

Once I have the battery power connected to both the LED and the Arduino, it should start blinking, correct? I'm starting to think I just don't have the LED power source connected right and that is why nothing is happening?

bxl4662 (author)nextjenn2016-10-26

Power isn't my best area, but let's work this out. You know the 9v is working fine powering your board, so for now I would just power it with your computer to save the battery.

Now you should have uploaded a program like the one in the image below (change the number of LEDs to match your string and the data pin to match whichever pin you are using). Once you have uploaded that to your arduino, the first LED should start blinking.

If nothing happens, try switching the LED number in the code from LED 0 to the LED closest to your 4x AA battery pack and re-uploading (probably LED 49 or 99). If that LED starts blinking, but you can't get LED 0 to blink, it sounds like there might be a voltage drop and there just isn't enough power/amperage from the battery pack? (electrical engineers, if I'm wrong, don't crucify me!)

nextjenn (author)bxl46622016-10-26

So I tried this and it still didn't work (even when I switched to 49).

The a few lights (random throughout the string) blink when I first connect the power source for the LED, but nothing is happening beyond that.

nextjenn (author)nextjenn2016-10-26

Update: I think I may have been using the wrong processor! changed and trying again.

nextjenn (author)nextjenn2016-10-26

That was it! It works now! Thank you for your help!

gilesw3 (author)nextjenn2016-11-25

How did yours eventually work please as I am having similar problems.

bxl4662 (author)nextjenn2016-10-27

I'm not sure I did anything for you, haha. But I'm glad you figured it out!!

DustinS58 (author)nextjenn2016-10-27

processor? can you explain? i'm having the same issue.

RollyD1 (author)2016-11-21

Done was able to edit and made Merry Christmas now im figuring out how to add buzz sound =)

konahart made it! (author)2016-10-30

Thanks for this Instructable -- it really got me up and running for this project! I wrote some code for it that might be useful:

https://github.com/konahart/Stranger-Things-SparkC...

Mine was written for Spark Core, but could be adapted for Arduino.

Thanks again for posting this!

RolandN10 (author)konahart2016-11-19

nice - thanks :)

bxl4662 (author)konahart2016-10-31

Great work! It is nice seeing other people tweaking the project to make it their own. Thanks for sharing!

RollyD1 (author)2016-10-29

Hello sir Bxl the link on your amazon LED lights only shows 50pcs but you are said we need 100pcs so i searched around amazon will this work?

https://www.amazon.com/Mokungit-100pcs-Diffused-Waterproof-Exposed/dp/B01DTUALBK/ref=sr_1_2?s=lawn-garden&ie=UTF8&qid=1477807897&sr=8-2&keywords=Mokungit%2B100pcs&th=1

bxl4662 (author)RollyD12016-10-30

Unfortunately, the link that you provided are not addressable. Essentially you would only be able to do the same thing to all of the LEDs at the same time (no spelling letters or Christmas lights).

Just so you know, I only used 100 due to the size of my wall. If you want to use smaller letters or have a smaller display, 50 lights would be plenty (you only truly need 26 or 36 if you want to have numbers too). The interesting thing is that in my purchase list, it shows that I bought the 100 LED option, but it looks like the company doesn't offer them any more. If you need all 100, I would just order two of the 50 LED strings that I posted on my instructions list. They literally snap together and then you combine the ground and power with the adapters I linked.


RollyD1 (author)bxl46622016-10-30

Thanks ill be ordering the 50 5v version =)

RollyD1 (author)RollyD12016-10-30

Oh Do we need both male and Female adapters? or just the female one? price has huge difference

bxl4662 (author)RollyD12016-10-31

I got the male/female so I could connect the two strings together. Since you are only getting one string you would just need a way to connect it to the power supply. I think that means you would only need a female connector for that end. I'm not exactly sure the best place to buy just one or two. I bought the pack so I could have extras for future projects.

RollyD1 (author)bxl46622016-11-15

Hello sir my order just came and everything is working.. can you teach me how to spell Merry Christmas? for display

About This Instructable

62,363views

173favorites

License:

Bio: I'm a mech engineer who likes to start tons of crazy projects and occasionally finish a few. I love to travel, but when I ... More »
More by bxl4662:Arduino Based Stranger Things Lights
Add instructable to: