Controlling LEDs with potentiometers

For this assignment, I used an Arduino Uno to control the brightness of three different colored LEDs using three separate potentiometers.

Components:

  • Arduino board
  • Breadboard
  • 3 potentiometers
  • 3 different colored LEDs (red, green, blue)
  • 3 ohm resistors
  • 12 wires

Extra:

I used one potentiometer to control the turning on and off of the three LEDs in sequential order.

/* POT to LED test -> by Owen Mundy March 11, 2010
 from: http://itp.nyu.edu/physcomp/Labs/AnalogIn
—————————————————————*/

// Analog input pin that the potentiometer is attached to 
int potPinBlue = A0; 
int potPinRed = A1;
int potPinGreen = A2;
// value read from the pot
int potValueBlue = 0;
int potValueRed = 0;
int potValueGreen = 0; 
// setting pins to the LEDs
int Blueled = 9; // PWM pin that the LED is on. n.b. PWM 0 is on digital pin 9
int Redled = 10; // PWM pin that the LED is on. n.b. PWM 0 is on digital pin 10
int Greenled = 11; // PWM pin that the LED is on. n.b. PWM 0 is on digital pin 11
 
void setup() {
 // initialize serial communications at 9600 bps:
 Serial.begin(9600);
 // declare the led pin as an output:
 pinMode(Blueled, OUTPUT);
 pinMode(Redled, OUTPUT);
 pinMode(Greenled, OUTPUT);
}
 
void loop() {
 potValueBlue = analogRead(potPinRed);
 potValueRed = analogRead(potPinGreen);
 potValueGreen = analogRead(potPinBlue); // read the pot value
 // turning pins on
 analogWrite(Blueled, potValueBlue/4); // PWM the LED with the pot value (divided by 4 to fit in a byte)
 analogWrite(Redled, potValueRed/4);
 analogWrite(Greenled, potValueGreen/4); 
 delay(10); // wait 10 milliseconds before the next loop
}
Extra:
byte ledPin[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; //pins used for LED's
int potPin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin

void setup()
{
 for(int i = 0; i < 13; i++){ 
 pinMode(ledPin[i],OUTPUT);
 } 
 
}

void loop()
{
val = analogRead(potPin); // reads the value of the potentiometer (value between 0 and 1023)
 for (int i = 0; i < 13; i++) {
 if((i * 102) > val) { digitalWrite(ledPin[i], HIGH);}
 else
 { digitalWrite(ledPin[i], LOW);}
 }
}
IMG_7396 IMG_7397

Video of me controlling LED brightness

Extra video: Sequential LEDs

Leave a Reply