Creative Skill I: LED Andy Mann
Creative Skill I: LED Andy Mann
What I wanted to learn, and why it interested me: I wanted to do LED Strips as I often build mini-dioramas, and I want to learn how to incorporate multiple LED Strips into projects I do. For instance, I built the temple of time from The Legend of Zelda: Breath of the Wild, and I wanted to incorporate illuminating flowers in the build, but I was unsure how to rig it all together. Hopefully, by going through this domain-specific building project, I can learn how to rig things up in a smaller manner and be able to incorporate light into more of my future projects.
Final outcome: I built a cross-stream-like LED Strip code where one side was blue, and the other red. In this case, the blue and red "bounced" and went to the other side. When both blue and red signals were in the LED, then the color emitted would be yellow. The input itself would be controlled by a potentiometer so that the amount of red/blue/yellow LED's would vary.
Images of final creative/exploratory output
This was an image of the final product, where I had the LED Strip color crossing over, split between blue-only, red-only, and both blue and red (yellow).
This is the actual final video, where the potentiometer controls the LED color
Process images from development towards creative/exploratory output
This was when I was soldering the connection of the LED Strip to the wiring for the LED Strip to work
This was the final version I thought was the final one (before I realized I needed the potentiometer involved as well).
Process and reflection:
This project was fairly simple initially. I interpreted the multiple data streams for the creative project portion as having two colors collide and not necessarily being controlled via a potentiometer. However, I had about an hour to make the shift from the colors being hardcoded into being controlled by a potentiometer, which was quite stressful. I ran into some issues and debugging the code took a majority of the time, as I was able to ask ChatGBT for some of the coding help as I knew generally how I wanted to do it, but not exactly (very thankful ChatGPT was alloweved for this project as theres no way I coudlve changed it in the time I had left without it). One thing I really focused on in this project was doing soldering first and early, as I cut soldering from project 1 due to time constraints. Soldering for the first time was terrifying, and having the ground wire rip out once I finished (resulting in me going back and resoldering it) was quite annoying. Overall, this project was helpful in me learning more about soldering, LED Strips, and even indirectly wiring up potentiometers and getting those to work, as I did not use those in project 1.
Technical details
This is the Electrical Schematic for the LED Strip driven by the input of the potentiometer
//60-223 Intro to Physical Computing, Spring 2026
//Domain-specific Skill Building exercise: LED Strip: Andy Mann
// The project here is an LED Strip that connects to my computer, where, when it is there is a blue LED signal coming from the left and a red signal from the right, and they each grow and then shrink. When an LED is registered as both blue and yellow, it outputs a yellow signal. The signal itself in my project is being controlled by the Potentiometer.
//Pin mapping:
//Arduino pin | role | details
// ------------------------------
// 2 output LED_DataPin button
// A0 input Potentiometer
//number of LED pins I used was 16
#include <Adafruit_NeoPixel.h>
const int LED_DATA_PIN = 2;
const int NUM_LEDS = 16;
const int POT_PIN = A0;
Adafruit_NeoPixel leds(NUM_LEDS, LED_DATA_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
Serial.begin(9600); // for debugging
leds.begin();
leds.clear();
leds.setBrightness(150); // brightness level
leds.show();
}
void loop() {
// Read potentiometer
int potValue = analogRead(POT_PIN);
// Map to number of LEDs
int size = map(potValue, 0, 1023, 0, NUM_LEDS);
// Print debug info
Serial.print("Pot: ");
Serial.print(potValue);
Serial.print(" Size: ");
Serial.println(size);
// Left and right bars
int leftSize = size;
int rightSize = size;
for (int i = 0; i < NUM_LEDS; i++) {
bool leftActive = (i < leftSize);
bool rightActive = (i >= NUM_LEDS - rightSize);
if (leftActive && rightActive) {
// overlap = yellow
leds.setPixelColor(i, leds.Color(255, 255, 0));
}
else if (leftActive) {
// left bar = red
leds.setPixelColor(i, leds.Color(255, 0, 0));
}
else if (rightActive) {
// right bar = blue
leds.setPixelColor(i, leds.Color(0, 0, 255));
}
else {
// off
leds.setPixelColor(i, leds.Color(0, 0, 0));
}
}
leds.show();
delay(20);
}