Wow, it’s been a while since I’ve written! However, if you’ve been on campus, you might have seen the lights up and running in the HCC. In blog post 6, I talked about the successful installation, so if you’d like to learn more, check it out!
If you read blog post 6, you may remember that I fried one of the boards on accident. We got a new one, and I wired it correctly this time. In this post, I wanted to address the wiring system I used in full. It’s a little complex, so bear with me.
The third floor wiring system is relatively simple. The lights have a voltage wire and a ground wire that connect directly to a power converter that plugs into the wall. The Elegoo Mega, my microcontroller of choice, is plugged directly into a separate power converter. Lastly, the two components (microcontroller and lights) are connected to each other by a ground wire and a digital wire, which connects to one of the digital pins on the microcontroller. The code calls out that specific digital pin and assigns lights to it. All in all, it’s four wires. Just don’t forget to connect the lights to a microcontroller ground pin- the digital pin puts out voltage and if you don’t close the loop, it will fry something. I’ll include resources if you want to learn more under the block of code!
The second floor wiring system is more complex than the one on the third floor, but only because of the second set of lights. Instead of requiring six wires, the second floor system uses eight. One set of lights is wired in the exact same way as the lights on the third floor, and the other set simply connects to a different digital pin and ground pin on the microcontroller. Just remember that each set of lights needs power (from the power converter) and data (from the microcontroller) and that every time a power or data wire is connected, a ground wire needs to be connected, too.
I’ll include a picture below, but it’s a bit difficult to see the wiring as it looks like a tangled mess. There’s a method to the madness, I promise!

Of course, it wouldn’t be an Evelynestallation blog post without a block of code, so I’ll attach the code the second floor lights are currently running. It’s a really pretty one- three rainbow comets, a pause, and then white sparkles. I enjoyed coding it, and I hope you enjoy getting to use it! The code for the third floor is similar. Just cut out everything marked with the number 2, and you’ll be all set.
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 5
#define PIN2 7
#define NUMPIXELS 300
#define NUMPIXELS2 178
Adafruit_NeoPixel pixels2(NUMPIXELS2, PIN2, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 15
#define DELAYVAL2 50
#define DELAYVAL300 10
#define BIGDELAYLOOP 12000
void setup() {
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
pixels.begin();
pixels2.begin();
}
void loop() {
for (int g=0; g<12; g++)
{
for(int i=0; i<NUMPIXELS; i++) {
pixels.setPixelColor(i, pixels.Color(0, 0, 0));
pixels.show();
}
for(int i=0; i<NUMPIXELS2; i++) {
pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
pixels2.show();
}
//rainbows comet loop
for(int i=NUMPIXELS; i>-56; i--) {
pixels.setPixelColor(i, pixels.Color(255, 0, 0));
pixels.setPixelColor(i+1, pixels.Color(255, 62.5, 0));
pixels.setPixelColor(i+2, pixels.Color(255, 127.5, 0));
pixels.setPixelColor(i+3, pixels.Color(0, 255, 0));
pixels.setPixelColor(i+4, pixels.Color(0, 127.5, 255));
pixels.setPixelColor(i+5, pixels.Color(0, 0, 255));
pixels.setPixelColor(i+6, pixels.Color(255, 0, 255));
pixels.setPixelColor(i+7, pixels.Color(0, 0, 0));
pixels.setPixelColor(i+60, pixels.Color(255, 0, 0));
pixels.setPixelColor(i+61, pixels.Color(255, 62.5, 0));
pixels.setPixelColor(i+62, pixels.Color(255, 127.5, 0));
pixels.setPixelColor(i+63, pixels.Color(0, 255, 0));
pixels.setPixelColor(i+64, pixels.Color(0, 127.5, 255));
pixels.setPixelColor(i+65, pixels.Color(0, 0, 255));
pixels.setPixelColor(i+66, pixels.Color(255, 0, 255));
pixels.setPixelColor(i+67, pixels.Color(0, 0, 0));
pixels.setPixelColor(i+120, pixels.Color(255, 0, 0));
pixels.setPixelColor(i+121, pixels.Color(255, 62.5, 0));
pixels.setPixelColor(i+122, pixels.Color(255, 127.5, 0));
pixels.setPixelColor(i+123, pixels.Color(0, 255, 0));
pixels.setPixelColor(i+124, pixels.Color(0, 127.5, 255));
pixels.setPixelColor(i+125, pixels.Color(0, 0, 255));
pixels.setPixelColor(i+126, pixels.Color(255, 0, 255));
pixels.setPixelColor(i+127, pixels.Color(0, 0, 0));
pixels.show();
delay(DELAYVAL300*4);
}
for(int i=0; i<NUMPIXELS; i++) {
pixels.setPixelColor(i, pixels.Color(0, 0, 0));
pixels.show();
}
for(int i=22; i<NUMPIXELS2+NUMPIXELS2; i++) {
pixels2.setPixelColor(i, pixels2.Color(255, 0, 0));
pixels2.setPixelColor(i-1, pixels2.Color(255, 62.5, 0));
pixels2.setPixelColor(i-2, pixels2.Color(255, 127.5, 0));
pixels2.setPixelColor(i-3, pixels2.Color(0, 255, 0));
pixels2.setPixelColor(i-4, pixels2.Color(0, 127.5, 255));
pixels2.setPixelColor(i-5, pixels2.Color(0, 0, 255));
pixels2.setPixelColor(i-6, pixels2.Color(255, 0, 255));
pixels2.setPixelColor(i-7, pixels2.Color(0, 0, 0));
pixels2.setPixelColor(i-60, pixels2.Color(125, 0, 0));
pixels2.setPixelColor(i-61, pixels2.Color(125, 31, 0));
pixels2.setPixelColor(i-62, pixels2.Color(125, 62, 0));
pixels2.setPixelColor(i-63, pixels2.Color(0, 125, 0));
pixels2.setPixelColor(i-64, pixels2.Color(0, 62, 125));
pixels2.setPixelColor(i-65, pixels2.Color(0, 0, 125));
pixels2.setPixelColor(i-66, pixels2.Color(125, 0, 125));
pixels2.setPixelColor(i-67, pixels2.Color(0, 0, 0));
pixels2.setPixelColor(i-120, pixels2.Color(125, 0, 0));
pixels2.setPixelColor(i-121, pixels2.Color(125, 31, 0));
pixels2.setPixelColor(i-122, pixels2.Color(125, 62, 0));
pixels2.setPixelColor(i-123, pixels2.Color(0, 125, 0));
pixels2.setPixelColor(i-124, pixels2.Color(0, 62, 125));
pixels2.setPixelColor(i-125, pixels2.Color(0, 0, 125));
pixels2.setPixelColor(i-126, pixels2.Color(125, 0, 125));
pixels2.setPixelColor(i-127, pixels2.Color(0, 0, 0));
pixels2.show();
delay(DELAYVAL300*4);
}
for(int i=0; i<NUMPIXELS2; i++) {
pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
pixels2.show();
}
delay(BIGDELAYLOOP);
//triple sparkle
for (int a=0; a<100; a++)
{
long w= random(0,NUMPIXELS);
long p= random(0,NUMPIXELS);
long q= random(0,NUMPIXELS);
long ww= random(0,NUMPIXELS2);
long pp= random(0,NUMPIXELS2);
long qq= random(0,NUMPIXELS2);
pixels.setPixelColor(w, pixels.Color(255, 255, 255));
pixels.show();
pixels.setPixelColor(p, pixels.Color(255, 255, 255));
pixels.show();
pixels.setPixelColor(q, pixels.Color(255, 255, 255));
pixels.show();
pixels2.setPixelColor(ww, pixels2.Color(255, 255, 255));
pixels2.show();
pixels2.setPixelColor(pp, pixels2.Color(255, 255, 255));
pixels2.show();
pixels2.setPixelColor(qq, pixels2.Color(255, 255, 255));
pixels2.show();
delay(200);
pixels.setPixelColor(w, pixels.Color(0, 0, 0));
pixels.setPixelColor(p, pixels.Color(0, 0, 0));
pixels.setPixelColor(q, pixels.Color(0, 0, 0));
pixels.show();
pixels2.setPixelColor(ww, pixels2.Color(0, 0, 0));
pixels2.setPixelColor(pp, pixels2.Color(0, 0, 0));
pixels2.setPixelColor(qq, pixels2.Color(0, 0, 0));
pixels2.show();
}
for(int i=NUMPIXELS; i>0; i--) {
pixels.setPixelColor(i, pixels.Color(0, 0, 0));
pixels.show();
}
for(int i=NUMPIXELS2; i>0; i--) {
pixels2.setPixelColor(i, pixels2.Color(0, 0, 0));
pixels2.show();
}}}
For more information on the specifics of electric currents, watch the video below:
For more information on circuits, visit this link!
And to wire your own Elegoo Mega, visit the link here: