gaming Pots

Assignment: Sensing: Potentiometers

Collaborators:

Assignment: Sensing: Potentiometers
Collaborators:

Description

Using potentiometers to supply analog input to the LEDs. We can control all the behaviors of LED (blinking and brightness) using the potentiometer controls.

Components Used

  • Light Emitting Diodes (LED)
  • Resistors

Arduino Code

 

Option 1: One pot controls brightness, another pot controls blinking

 

int potPin = 2;   // select the input pin for the potentiometer

int b_potPin = 1;

 

int ledPin = 9;   // select the pin for the LED

int b_ledPin = 8;

int val = 0;      // variable to store the value coming from the sensor

int b_val=0;

 

void setup() {

pinMode(b_ledPin, OUTPUT);

Serial.begin(9600);

}

void loop() {

val = analogRead(potPin);    // read the value from the sensor, between 0 - 1024

Serial.println(val);

analogWrite(ledPin, val/4); // analogWrite can be between 0-255

 

b_val = analogRead(b_potPin);    // read the value from the sensor, between 0 - 1024

digitalWrite(b_ledPin, HIGH);  // turn the ledPin on

delay(b_val);                  // stop the program for some time

digitalWrite(b_ledPin, LOW);   // turn the ledPin off

delay(b_val);                  // stop the program for some time

}

 

------------------------------------------------------------------------------------------------------------

Extra: Rotation of the knob can control both the brightness and blinking rate of the same LED.

 

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

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

// Values
int aVal = 0;   // Variables to store the input from the potentiometers
int bVal = 0;  
int cVal = 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(aOut, OUTPUT);   // sets the digital pins as output
  pinMode(bOut, OUTPUT);   
  pinMode(cOut, OUTPUT); 
  Serial.begin(9600);     // Open serial communication for reporting
}

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

  aVal = analogRead(aIn) / 4;  // read input pins, convert to 0-255 scale
  bVal = analogRead(bIn) / 4; 
  cVal = analogRead(cIn) / 4;  

  analogWrite(aOut, aVal);    // Send new values to LEDs
  analogWrite(bOut, bVal);
  analogWrite(cOut, cVal);

  if (i % wait == 0)                // If enough time has passed...
  {    
    checkSum = aVal+bVal+cVal;      // ...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("A: ");        // ...then print the values.
        Serial.print(aVal);         
        Serial.print("\t"); 
        Serial.print("B: ");        
        Serial.print(bVal);
        Serial.print("\t");
        Serial.print("C: ");                
        Serial.println(cVal); 
        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);
    }
  }
}
------------------------------------------------------------------------
int potPin = 2;   // select the input pin for the potentiometer
int b_potPin = 1;
int ledPin = 9;   // select the pin for the LED
int val = 0;      // variable to store the value coming from the sensor
int b_val=0;
void setup() {
pinMode(b_ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
val = analogRead(potPin);    // read the value from the sensor, between 0 - 1024
Serial.println(val);
analogWrite(ledPin, val/4); // analogWrite can be between 0-255
b_val = analogRead(potPin);    // read the value from the sensor, between 0 - 1024
digitalWrite(ledPin, HIGH);  // turn the ledPin on
delay(b_val);                  // stop the program for some time
digitalWrite(bledPin, LOW);   // turn the ledPin off
delay(b_val);                  // stop the program for some time
}