“Use the force!”

WARNING: This project deals with high-voltage mains wiring which is incredibly dangerous if you don’t know what you’re doing. Only complete the mains side wiring if you have appropriate training.

/* Use the Force
 
 Checks whether or not the user has the force by getting the light
 value from photoresistor on the Codeshield and turns on the relay
 if the user does in fact have the force. This code expects that
 the relay is hooked into some other device to make a more resounding
 force effect (such as a floor lamp).
 
 The circuit:
 * Photoresistor plugged into pin 5 (or soldered onto the Codeshield).
 * Relay plugged into pin 2 (or soldered onto the Codeshield).
 No other hardware is required other than what is already mounted
 on the Codeshield.
 
 
 created 2012
 by Verdi R-D
 
 This example code is in the public domain.
 We are not affiliated with LucasArts or LucasFilms in any way.
 We just like to make our childhood come to life.

 
 http://www.diyode.com/codeshield/<some later define-able url>
 */


// Define useful names for the components
// that we'll use so that it is easier
// to remember later on
#define PHOTO A5
#define RELAY 2


// Create a global placeholder for 
// storing the status of the force
boolean forceEnabled = false;

void setup () {
  // Configure inputs and outputs
  pinMode(PHOTO, INPUT); // Used to check the status of the force
  pinMode(RELAY, OUTPUT); // Provide feedback on the status of the force
}



void loop () {
  // Get the current state of the force
  boolean currentForce = checkForce();
  
  // Check if the current force is different
  // from the last time we checked it
  if ( currentForce != forceEnabled ) {
    
    // If we have suddenly gotten the force
    if ( currentForce ) {
      enableForce();
    }
    
    // Otherwise, we have just lost the force
    else {
      disableForce();
    }
    
  }
  
  // Delay to give the relay time to flip and the
  // sensors to change
  delay(50); // Don't check the force quickly young padawan
}



boolean checkForce() {
  // Create a placeholder for storing the status of
  // the force.
  boolean force = false; // Default it to not having the force
  
  // Check if the force is strong with this one
  if (analogRead(PHOTO) < 511) {
    force = true; // It is
  }
  
  // Return the status of the force
  return force;
}



void enableForce() {
  // The force has been enabled
  
  // Turn on the force (the relay)
  digitalWrite(RELAY, HIGH);
  
  forceEnabled = true;
}



void disableForce() {
  // The force has been disabled
  
  // Turn off the force (the relay)
  digitalWrite(RELAY, LOW);
  
  forceEnabled = false;
}
									

Leave a Reply

Your email is never published nor shared.

You may use these HTML tags and attributes:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>