Announcements

November 24, 2007
Reading for November 27th, are now posted. Enjoy!

October 2, 2007
To upload your thoughtless acts, create a new assignment page like any other lab. You'll see "Thoughtless Acts" listed as one of the assignment options.

May 24, 2008
This site has been archived and is no longer editable. Stay tuned for the next version, coming in the fall!


3 led by 3 pot

Project Members: 
Wenhua Shi

i use 3 pot to control 3 led.


code:
/*
* "Coffee-cup" Color Mixer:
* Code for mixing and reporting PWM-mediated color
* Assumes Arduino 0004 or higher, as it uses Serial.begin()-style communication
*
* Control 3 LEDs with 3 potentiometers

* If the LEDs are different colors, and are directed at diffusing surface (stuck in a
*   a Ping-Pong ball, or placed in a paper coffee cup with a cut-out bottom and
*   a white plastic lid), the colors will mix together.

*
* When you mix a color you like, stop adjusting the pots.
* The mix values that create that color will be reported via serial out.
*
* Standard colors for light mixing are Red, Green, and Blue, though you can mix

*   with any three colors; Red + Blue + White would let you mix shades of red,
*   blue, and purple (though no yellow, orange, green, or blue-green.)
*
* Put 220 Ohm resistors in line with pots, to prevent circuit from

*   grounding out when the pots are at zero
*/

// Analog pin settings
int bIn = 0;    // Potentiometers connected to analog pins 0, 1, and 2
int gIn = 1;    //   (Connect power to 5V and ground to analog ground)
int rIn = 2; 

// Digital pin settings
int bOut = 9;   // LEDs connected to digital pins 9, 10 and 11
int gOut = 10;  //   (Connect cathodes to digital ground)
int rOut = 11; 

// Values
int bVal = 0;   // Variables to store the input from the potentiometers

int gVal = 0; 
int rVal = 0; 

// Variables for comparing values between loops
int i = 0;            // Loop counter
int wait = (1000);    // Delay between most recent pot adjustment and output


int checkSum     = 0; // Aggregate pot values
int prevCheckSum = 0;
int sens         = 3; // Sensitivity theshold, to prevent small changes in
                      // pot values from triggering false reporting

// FLAGS
int PRINT = 1; // Set to 1 to output values
int DEBUG = 1; // Set to 1 to turn on debugging output

void setup()
{
  pinMode(bOut, OUTPUT);   // sets the digital pins as output
  pinMode(gOut, OUTPUT);  

  pinMode(rOut, OUTPUT);
  Serial.begin(9600);     // Open serial communication for reporting
}

void loop()
{
  i += 1; // Count loop

  bVal = analogRead(bIn) / 4;  // read input pins, convert to 0-255 scale
  gVal = analogRead(gIn) / 4;
  rVal = analogRead(rIn) / 4; 

  analogWrite(bOut, bVal);    // Send new values to LEDs
  analogWrite(gOut, gVal);
  analogWrite(rOut, rVal);

  if (i % wait == 0)                // If enough time has passed...

  {   
    checkSum = bVal+gVal+rVal;      // ...add up the 3 values.
    if ( abs(checkSum - prevCheckSum) > sens )   // If old and new values differ
                                                  // above sensitivity threshold

    {
      if (PRINT)                    // ...and if the PRINT flag is set...
      {
        Serial.print("b: ");        // ...then print the values.
        Serial.print(bVal);        
       
Serial.print("\t");
        Serial.print("g: ");       
        Serial.print(gVal);
        Serial.print("\t");
        Serial.print("r: ");               
       

Serial.println(rVal);
        PRINT = 0;
      }
    } 
    else
    {
      PRINT = 1;  // Re-set the flag  
    }
    prevCheckSum = checkSum;  // Update the values

    if (DEBUG)   // If we want debugging output as well...

    {
      Serial.print(checkSum);
      Serial.print("<=>");
      Serial.print(prevCheckSum);
      Serial.print("\tPrint: ");
      Serial.println(PRINT);
    }
  }

}


AttachmentSize
noname-1.jpeg65.55 KB
noname-2.jpeg75.32 KB

Comments

nice job! but could you

nice job! but could you please be more specific in the description for future lab reports? What are the inputs? what is the system response?


Powered by Drupal - Design by Artinet