Introduction: Stranger Things Lights With Arduino
Stranger Things is a really amazing series and their lights inspired me to build my own lights to display a message with the Arduino
Step 1: Requirements
The hardware that is used in the projects are as follows
Arduino Uno R3 Microcontroller A000066 (can be substituted with any Arduino)
WS2811 12mm Diffused Digital RGB Led Pixel String 50pcs/string Addressable Dream Color LED Pixels Module IP68 Waterproof (DC 5V Round) (can be substituted with any WS2811 LED)
NEWSTYLE 5V 8A AC/DC LED Strip Power Supply Converter Adapter 5.5x2.1mm Plug For WS2811/2801 LED String Light (Any 5v adapter that is greater than 5A should do)
OSEPP DC Barrel Jack Adapter-Female Components Other LS-00015
Step 2: Building the Circuit
Building the circuit for this project is relatively straightforward and requires no soldering skills at all. To first start off,
- Strip the wiring off both ends of the string of lights. We do not need its connectors and will be using our own
- Connect the 5V and GND wires from the string of lights and to the converter jack. This will be used to power both the lights and the Arduino
- On the other end of the wire, connect the 5V and GND to the 5V and GND pins of the Arduino. That means that our Arduino will be drawing power from the LED strips which are connected to the power adapter. The reason we chose to do it this way is that we can power everything off one power adapter. If we swapped it the other way (have the Arduino power the lights), the Arduino would not have been able to provide the necessary current for the lights.
- Finally, connect the data pin to the Arduino. The Arduino will be sending instructions through this pin
Step 3: Setting Up the Computer / Loading on the Proram
In order to load the program on, we need the Arduino program/driver as well as the Adafruit Neopixel library
- Install the Arduino IDE if you haven't already: https://www.arduino.cc/en/Main/Software
- Install the Adafruit Neopizel Library - From the Sketch menu, > Include Library > Manage Libraries... In the text input box type in "NeoPixel". Look for "Adafruit NeoPixel by Adafruit" and select the latest version by clicking on the dropbox menu next to the Install button. Then click on the Install button.
Once you are done, copy the code below onto the IDE and upload it to the board (you can find a copy on my GitHub here: https://github.com/Timothylock/Arduino-Stranger-Lights). To change the word getting displayed, edit the displayWord variable located on line 22. You can also download the code itself below
<p>#include <adafruit_neopixel.h>#ifdef __AVR__ #include <avr power.h="">#endif<br>#define PIN 13 Adafruit_NeoPixel strip = Adafruit_NeoPixel(50, PIN, NEO_GRB + NEO_KHZ800); void setup() { strip.begin(); strip.show(); // Initialize all pixels to 'off' colorWipe(strip.Color(244, 220, 66), 50); // Wipe all the LEDs to make sure they work delay(1000); colorWipe(strip.Color(0, 0, 0), 0); // Turn everything off} void loop() { String displayWord = "readers"; // Use lowercase String alphabet = "abcdefghqponmlkjixrstuvwxyz"; // Turn on individual lights for (int i = 0; i < displayWord.length(); i++) { // Turn on light strip.setPixelColor(alphabet.indexOf(displayWord[i])*2, strip.Color(random(0, 250), random(0, 250), random(0, 250))); strip.show(); delay(1500); // Turn off light strip.setPixelColor(alphabet.indexOf(displayWord[i])*2, strip.Color(0, 0, 0)); } // Turn on all the lights for the word allTurn(displayWord, strip.Color(random(0, 250), random(0, 250), random(0, 250)), alphabet); delay(2000); // Turn off all the lights for the word allTurn(displayWord, strip.Color(0, 0, 0), alphabet); delay(2000);} void allTurn(String str, uint32_t c, String alphabet){ for (int i = 0; i < str.length(); i++) { Serial.print(str[i]); Serial.print(alphabet.indexOf(str[i])); // Turn on light strip.setPixelColor(alphabet.indexOf(str[i])*2, c); strip.show(); }} // Fill the dots one after the other with a colorvoid colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i<strip.numpixels(); i++)="" {="" strip.setpixelcolor(i,="" c);="" strip.show();="" delay(wait);="" }}<="" p=""></strip.numpixels();></avr></adafruit_neopixel.h></p>
Attachments
Step 4: Set Up Your Lights
Now that all of the hard stuff is over with, we can finally go about putting our creation up! Every 2 LEDs should be one letter. As you can see in the picture, the lights switch at certain intervals (so the order that the letter should be in are like this "abcdefghqponmlkjixrstuvwxyz".