Lab 3: Control LED Sequence with Two Potentiometers

Submitted by m-craig on Tue, 02/19/2013 - 19:23

This lab expands the 3-LED circuit created in the previous lab and attaches two potentiometers to provide analog control of LED output.  The first of these potentiometers (A0) controls the brigthness of the LEDs; the other (A1) controls the rate at which the LEDs blink.

Code has been modified from the original to create a more complex sequence of blinks incorporating all three LEDs.

Next time I'd like to find out of there is a way to alter the brightness and rate of blinking within individual blink sequences, instead of just at the end of them as current code allows.  But to do this I would've needed to seek outside help, which I didn't have time to do this week (for the hopefully viable reason that I had mono.)

Components Used:

1 - Arduino UNO Board
1 - Solderless Breadboard
3 - 220-ohm resistors
3 - LED Lights
2 - Potentiometers
1 - Cotton-in Cup diffuser as used in previous lab

Code:

/*
 * one pot dims, the other pot changes the blinking rate
 * modification of the following
 * http://www.arduino.cc/en/Tutorial/AnalogInput
 */
int pot1Pin = 0;   // select the input pin for the potentiometer 1
int pot2Pin = 1;   // select the input pin for the potentiometer 2
int pot1Val = 0;   // variable to store the value coming from pot 1
int pot2Val = 0;   // variable to store the value coming from pot 2
int led1Pin = 9;   // select the pin for the LED 1
int led2Pin = 10;  // select the pin for the LED 2
int led3Pin = 11;
void setup() {
   pinMode(led1Pin, OUTPUT);  // declare the led1Pin as an OUTPUT
   pinMode(led2Pin, OUTPUT);  // declare the led2Pin as an OUTPUT
   pinMode(led3Pin, OUTPUT);}
void loop() {
   pot1Val = analogRead(pot1Pin);   // read the value from pot 1, between 0 - 1024, for dimming
   pot2Val = analogRead(pot2Pin);   // read the value from pot 2, between 0 - 1024, for blinking
   analogWrite(led2Pin, pot1Val/4); // dim LED to value from pot1
   delay(pot2Val);                  // stop the program for some time, meaning, LED is on for this time
   analogWrite(led2Pin, 0);         // dim LED to completely dark (zero)
   delay(pot2Val);                  // stop the program for some time, meaning, LED is OFF for this time
   analogWrite(led1Pin, pot1Val/4); // dim LED to value from pot1
   delay(pot2Val);                  // stop the program for some time, meaning, LED is on for this time
   analogWrite(led1Pin, 0);         // dim LED to completely dark (zero)
   delay(pot2Val);                  // stop the program for some time, meaning, LED is OFF for this time
   analogWrite(led2Pin, pot1Val/4); // dim LED to value from pot1
   delay(pot2Val);                  // stop the program for some time, meaning, LED is on for this time
   analogWrite(led2Pin, 0);         // dim LED to completely dark (zero)
   delay(pot2Val);                  // stop the program for some time, meaning, LED is OFF for this time
   analogWrite(led3Pin, pot1Val/4); // dim LED to value from pot1
   delay(pot2Val);                  // stop the program for some time, meaning, LED is on for this time
   analogWrite(led3Pin, 0);         // dim LED to completely dark (zero)
   delay(pot2Val);                  // stop the program for some time, meaning, LED is OFF for this time
   analogWrite(led2Pin, pot1Val/4); // dim LED to value from pot1
   delay(pot2Val);                  // stop the program for some time, meaning, LED is on for this time
   analogWrite(led2Pin, 0);         // dim LED to completely dark (zero)
   delay(pot2Val);                  // stop the program for some time, meaning, LED is OFF for this time
   analogWrite(led1Pin, pot1Val/4); // dim LED to value from pot1
   delay(pot2Val);                  // stop the program for some time, meaning, LED is on for this time
   analogWrite(led1Pin, 0);         // dim LED to completely dark (zero)
   delay(pot2Val);                  // stop the program for some time, meaning, LED is OFF for this time
   analogWrite(led3Pin, pot1Val/4); // dim LED to value from pot1
   delay(pot2Val);                  // stop the program for some time, meaning, LED is on for this time
   analogWrite(led3Pin, 0);         // dim LED to completely dark (zero)
   delay(pot2Val*2);                  // stop the program for some time, meaning, LED is OFF for this time
}

lab3a.JPG
lab3b.JPG
0
Your rating: None
Drupal theme by Kiwi Themes.