Countdown Cubes
Made by jhjenkin, queenien2000, ankitaa and timothyberryjr
Made by jhjenkin, queenien2000, ankitaa and timothyberryjr
Created: February 3rd, 2015
The countdown cubes enable couples to give meaningful gifts to each other, across long distances, at the touch of a finger. While they are together, they can fill their counterparts box with an array of gifts and then lock them away. When they are separated, gift messages can be sent from one box to the other. The availability of the gift is displayed via a breathing blue LED. Upon seeing the blue LED, the user can acknowledge his or her presence and the compartment will be opened automatically.
int ledPin = D1; //"You've got mail" LED
int sendPin = A0; //Send gift
int presPin = A1; //Presence sensor
int presThresh = 1000; //Presence sensor threshold
int sendThresh = 1000; //Send sensor threshold
bool mailIntrpt = false; //Got mail interrupt
bool presIntrpt = false; //Is present interrupt
int brightness = 0; //Stuff for fading LED
int fadeAmount = 5; //Stuff for fading LED
int servoPin = A7; //Servo pin
Servo myServo; //Servo name
int presRead = 0; //Initialize presence reading
int sendRead = 0; //Initialize send reading
void setup() {
pinMode (ledPin, OUTPUT); //Pin Modes
pinMode (sendPin, INPUT);
pinMode (presPin, INPUT);
pinMode (servoPin, OUTPUT);
myServo.attach(servoPin); //Attach servo motor to appropriate pin
Spark.subscribe("askjdfhkas1", gotMail); //Did I get mail?
Spark.variable("Presence", &presRead, INT); //Check if presence sensor is working
Spark.variable("Send", &sendRead, INT); //Check if send sensor is working
}
void loop() {
myServo.write(10); //Start servo motor at 0 position
//SEND GIFT code
sendRead = analogRead(sendPin); //Read send pin input
if (sendRead > sendThresh) //If send button is pressed,
{
sendMail(); //Send notification
}
else if (sendRead <= sendThresh) //If send button is not pressed, do nothing
{}
//CHECKING PRESENCE code
presRead = analogRead (presPin); //Read presence pin input
if (presRead > presThresh) //If presence read shows that I am present
{
presIntrpt = true; //Change my presence status
}
else if (presRead <= presThresh) //If presence read shows that I am NOT present
{
presIntrpt = false; //Keep my presence status false
}
//RECIEVE GIFT CODE
if (mailIntrpt == true) //If I have recieved mail
{
analogWrite(ledPin, brightness); //Fade LED (source: http://arduino.cc/en/Tutorial/Fade)
brightness = brightness + fadeAmount;
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
delay(30);
if (presIntrpt == true) // If I am present
{
digitalWrite(ledPin, LOW); //Turn indicator LED off
myServo.write(170); //Open door
delay(10000); //Wait
myServo.write(0); //Close door
presIntrpt = true; //Reset presence input
mailIntrpt = true; //Reset message input
//Ready for new message
}
else if (presIntrpt == false) //If I am not present, do nothing
{}
}
else if (mailIntrpt == false) //If I don't have a gift message,
{
digitalWrite(ledPin,LOW); //Turn indicator LED off
}
}
void sendMail() //If send button is pressed
{
Spark.publish("askjdfhkas2"); //Publish to other Spark core
}
void gotMail(const char *event, const char *data) //If a message is recieved from other Spark
{
mailIntrpt = true; //Change my message inbox status to true
}
Click to Expand