Category

Emotional Box with Compartments Closed

Emotional Box with Compartments Open
Brief
Urgent: You feel a need for immediate action to address a critical situation
- How the user feels about the box
- How the user feels about the contents and the sender
- How the user feels about the process of opening the box
- How the user feels about themselves when they experience this interaction.
Sense of Urgency
Factors that influence urgency
- Time
- Stakes
- Unfavorable circumstances
- Need for action
Brainstorm
We brainstormed multiple concepts based off of these factors, taking inspiration from situations like a pot boiling over and earthquakes.
In the end, we took inspiration from escape rooms, where a user has to complete a number of tasks within a given time

Concept
An item of value to the user lies underneath a glass of water which will overflow unless the user completes 3 tasks. To start the process of opening the box, the user has to press a button on the exterior, starting the pump which begins filling the glass.
The challenges:
- Decoding Challenge
- Wire Matching
- Shape Matching
Pump Subsystem
- Glanceable clock
- Water is intuitive
- Fills at steady rate
- Urgency increases as it is filled
- User can calculate %filled
- Item of value in the container

Wire Matching
“Complete the circuit”
- 5 different wires with laser cut slots into breadboard below
- Completed circuit causes servo to go from 0 to 180, releasing unlocking shape matching compartment

Shape Matching
- 3D printed shapes with magnets on bottom
- Hall effect sensor inside cutouts to detect presence of magnet
- When all shapes are detected, water stops

Putting it all together
- Electronics housed under floors
Reflection
By developing the solution over four design sprints, we were able to adapt to changes and user feedback quickly.
Code
#include
#include
/// Initiate
const int PWM = 2; //Pump
const int DIR = 3; //Direction of pump
const int BUT = 6; // Exterior Button
int BUT2 = 5; // Reset Button
int HALL1 = 8;
int HALL2 = 9;
int HALL3 = 10;
int HALL4 = 11;
int state1 = 0;
int state2 = 0;
int state3 = 0;
int state4 = 0;
Servo Myservo;
int pos=0;
ezButton button(BUT); // Set-up button to be toggled on/off
// variables will change:
int PWMState = LOW; // Current state of Pump
void setup() {
button.setDebounceTime(50); // Set debounce time to 50 milliseconds
pinMode(HALL1, INPUT); //Hall effect
pinMode(HALL2, INPUT);
pinMode(HALL3, INPUT);
pinMode(HALL4, INPUT);
Myservo.attach(4); // Servo
Myservo.write(0);
}
void loop() {
state1 = digitalRead(HALL1); // Setup hall effect sensors
state2 = digitalRead(HALL2);
state3 = digitalRead(HALL3);
state4 = digitalRead(HALL4);
button.loop(); // MUST call the loop() function first
if(button.isPressed()) { // Start system with exterior toggle button
Myservo.write(180);
// Toggle state of Pump
PWMState = !PWMState;
// Control Pump according to the toggled sate
digitalWrite(PWM, PWMState);
digitalWrite(DIR, HIGH);
}
if (digitalRead(BUT2)==LOW) { // Reset system, reverse pump, lock servo
Serial.println(“DOWN”);
digitalWrite(PWM, HIGH);
digitalWrite(DIR, LOW);
Myservo.write(0);
}
if ((state1 == LOW) && (state2 == LOW) && (state3 == LOW) && (state4 == LOW)){ //All hall effects read LOW
Serial.println(“SHAPES IN”);
digitalWrite(PWM, LOW); //Stops pump
digitalWrite(DIR, LOW);
}
}