What I wanted to learn, and why it interested me: I chose to look into the LED strips because I was interested in learning about more efficient and easily customizable lighting setups.
Final outcome: For my final output, I built a simple system using a potentiometer and an LED strip. I divided the rainbow into eight evenly spaced colors so that each of the eight LEDs displays one distinct color. As the potentiometer is rotated, the rainbow shifts up and down the strip, creating a smooth, interactive movement of color.
Images of Creative Output
Process Images
Reflection: For this project, I explored using an LED strip with the Arduino Uno R3. My main motivation was previous frustration with individual RGB LEDs, especially dealing with resistors and inconsistent color mixing. I wanted to see if LED strips would be easier to control and produce more accurate color output.
I began by following examples from the course website and running the provided source code to understand the wiring and basic programming structure. Once I confirmed everything was working, I experimented with adjusting brightness and RGB values to better understand how the strip handled color. One major difference I noticed was that the LED strip did not require individual resistors, which made the setup much simpler and cleaner. I also found that achieving consistent color felt more intuitive.
After building confidence, I created my own interactive output: using a potentiometer to shift an eight-color rainbow pattern across the eight LEDs. Overall, I learned that LED strips are more efficient and flexible, and I feel more comfortable incorporating them into future projects.
Code:
#include <Adafruit_NeoPixel.h>
#define LED_PIN 6
#define NUM_LEDS 8
#define POT_PIN A0
Adafruit_NeoPixel strip(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
uint32_t colors[8];
void setup() {
strip.begin();
strip.setBrightness(80);
strip.show();
colors[0] = strip.Color(255, 0, 0); // Red
colors[1] = strip.Color(255, 127, 0); // Orange
colors[2] = strip.Color(255, 255, 0); // Yellow
colors[3] = strip.Color(0, 255, 0); // Green
colors[4] = strip.Color(0, 0, 255); // Blue
colors[5] = strip.Color(75, 0, 130); // Indigo
colors[6] = strip.Color(148, 0, 211); // Violet
colors[7] = strip.Color(255, 0, 255); // Magenta
}
void loop() {
int potValue = analogRead(POT_PIN);
int shift = potValue / 128;
for (int i = 0; i < NUM_LEDS; i++) {
int index = (i + shift) % 8;
strip.setPixelColor(i, colors[index]);
}
strip.show();
}