pot controlled LED cross fade

I was wondering if someone could tell me what I’m doing wrong here. I’m still a noob thats in need of a lot of help.

here is my code that I modded:

* Code for cross-fading 3 LEDs, red, green and blue, or one tri-color LED, using PWM
* The program cross-fades slowly from red to green, green to blue, and blue to red
* The debugging code assumes Arduino 0004, as it uses the new Serial.begin()-style functions
* Clay Shirky <clay.shirky@nyu.edu> 

// ??? int wait = 0;      // variable to store the reading from the potentiometer
int potPin = 3;     // analog pin where to plug the potentiometer at

int wait = analogRead(potPin); // ???

int redPin   = 9;   // Red LED,   connected to digital pin 9
int greenPin = 10;  // Green LED, connected to digital pin 10
int bluePin  = 11;  // Blue LED,  connected to digital pin 11

// Program variables
int redVal   = 255; // Variables to store the values to send to the pins
int greenVal = 1;   // Initial values are Red full, Green and Blue off
int blueVal  = 1;

int i = 0;     // Loop counter    

// int wait = 50; // 50ms (.05 second) delay; shorten for faster fades

int DEBUG = 0; // DEBUG counter; if set to 1, will write values back via serial

void setup()
  wait = analogRead(potPin);   // read the potentiometer
  pinMode(redPin,   OUTPUT);   // sets the pins as output
  pinMode(greenPin, OUTPUT);   
  pinMode(bluePin,  OUTPUT); 
  if (DEBUG) {           // If we want to see the pin values for debugging...
    Serial.begin(9600);  // ...set up the serial ouput on 0004 style

// Main program
void loop()
  i += 1;      // Increment counter
  if (i < 255) // First phase of fades
    redVal   -= 1; // Red down
    greenVal += 1; // Green up
    blueVal   = 1; // Blue low
  else if (i < 509) // Second phase of fades
    redVal    = 1; // Red low
    greenVal -= 1; // Green down
    blueVal  += 1; // Blue up
  else if (i < 763) // Third phase of fades
    redVal  += 1; // Red up
    greenVal = 1; // Green low
    blueVal -= 1; // Blue down
  else // Re-set the counter, and start the fades again
    i = 1;

  analogWrite(redPin,   redVal);   // Write current values to LED pins
  analogWrite(greenPin, greenVal); 
  analogWrite(bluePin,  blueVal);  

  if (DEBUG) { // If we want to read the output
    DEBUG += 1;     // Increment the DEBUG counter
    if (DEBUG > 10) // Print every 10 loops
      DEBUG = 1;     // Reset the counter

      Serial.print(i);       // Serial commands in 0004 style
      Serial.print("\t");    // Print a tab
      Serial.print("R:");    // Indicate that output is red value
      Serial.print(redVal);  // Print red value
      Serial.print("\t");    // Print a tab
      Serial.print("G:");    // Repeat for green and blue...
      Serial.println(blueVal); // println, to end with a carriage return
  delay(wait); // Pause for 'wait' milliseconds before resuming the loop


What is the problem that you are having?

Is the code not compiling?

Is it not doing what you expect?

If not, what was the expected result and what is happening?

nothing happened.

I wired everything up, and nothing.

it compiled fine. it uploaded fine. I'm wanting the pot to control the time of the delay between the fades.

Are you getting your debug prints? I noticed that wait is in the setup, so it will not change unless you reset.

Are you saying that the LED's are not doing anything?

If so, have you checked that the cathode/anode orientation is correct?

Have you tried another sketch like led_blink with a led (anode) on pin 13.

Have you ever run anything on this arduino?

Have you check the Vcc and ground points with a meter?


have you made sure you choose the right type of processor in the MCU part of the Tools Menu? If you just purchased your board it should be a mega168. Having this chosen wrong will not produce any errors when compiling or uploading, but the program will never execute.


I think I;m wiring it up wrong. I think I just need to play around with it more.

but the code looks fine??