0% found this document useful (0 votes)
150 views17 pages

Interactive Spring Wall Design

The wall is composed of spring-like elements that can lower to form openings for passage. Sensors detect users entering and exiting and control the openings and lighting accordingly. As users pass through, certain paths become brighter, attracting more traffic and forming well-worn paths over time. The system tracks the number of users and controls the lighting level, opening the wall elements to maintain equilibrium between open possibility and formed paths.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
150 views17 pages

Interactive Spring Wall Design

The wall is composed of spring-like elements that can lower to form openings for passage. Sensors detect users entering and exiting and control the openings and lighting accordingly. As users pass through, certain paths become brighter, attracting more traffic and forming well-worn paths over time. The system tracks the number of users and controls the lighting level, opening the wall elements to maintain equilibrium between open possibility and formed paths.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

flex wall

arc3015 :: Studio Assignment 01


The wall is completely

composed of separat
at spring-
ate

like elements. In its initial

state, the room offers equal

possibilities for passsage.

Approaching any on
ne of the

spring elements willl cause thee

element to lower morphing

from wall to floor, solid


olid to void
d.

In real-
eal-world applications,
eal-w

hydraulic
aulics would presumably be
aulic

used for this action.

Sensors on the floor in front

and behind each spring element

react to the approach of the

user.
If entered, the spring closes
ess

behind the user and


d iis lit

from below. Each en


ntrance
ntrance

increases the light, each exit

diminishes the lightt.


As activity occurs across

the threshold, certain


ain

paths become brigh


hter,

and logically, their

brightness labels them

as “entrances” thereeby

attracting more useers.

Over time, the open


n

possibility off the blank

walllll slo
slowly drifts into

well wor
worn paths...
...only to be broken by the brave and the curious.
possible scenario A: blank slate

plan elevation
plan elevation
plan elevation
plan elevation
plan elevation
possible scenario B: aggregation

plan elevation
plan elevation
plan elevation
plan elevation
plan elevation
code: initialization & setup
//Sensor A is Connected to Analog pin 5 --> Outside Sensor
//Sensor B is Connected to Analog pin 4 --> Inside Sensor

/////////////////////////////////// Declare Universal Variables

// calibration averages
int averageA;
int averageB;

// timing elements
long a_Passed_Time;
long b_Passed_Time;
long t;

// people tracking
int just_Passed_A=-1;
int just_Passed_B=-1;
int people_Count=0;

// include Servo
#include <Servo.h>
Servo myservo; // create servo object to control a servo

///////////////////////////////////// Setup

void setup(){
Serial.begin(9600);
pinMode(6,OUTPUT);

// setup servo
myservo.attach(3);
myservo.write(170);

//Calibrate the first sensor


for(int i=0;i<10;i++) {
averageA += analogRead(5);
}
averageA/=10;
//Calibrate the second sensor
for(int i=0;i<10;i++) {
averageB+=analogRead(4);
}
averageB/=10;

Serial.println(“System Ready”); //System let us know that the calibration is done


}
code: loop

//////////////////////////////////////Begin Program // if passage is triggered and used


if (just_Passed_A==1 && just_Passed_B==1){
void loop(){ // reset just_Passed
just_Passed_A = -1;
// Read photocells just_Passed_B = -1;
int A = analogRead(5); // use time to judge direction
int B = analogRead(4); if(a_Passed_Time<b_Passed_Time) {
people_Count=people_Count+1;
// entrance photocell is triggered }
if (A < averageA /2){ if(a_Passed_Time>b_Passed_Time){
a_Passed_Time=millis(); people_Count=people_Count-1;
just_Passed_A=1; if (people_Count < 0) {
myservo.write(0); people_Count = 0;
} }
}
// exit photocell is triggered myservo.write(170); // raise wall
if (B < averageB/2 ){ analogWrite(6,people_Count*20); // adjust light level
b_Passed_Time=millis();
just_Passed_B=1; // give time to move out of the way before recalibrating
myservo.write(0); delay (1000);
}
// recalibrate as the light levels would have changed
// if passage is triggered but not used in 5 sec, close passage //Calibrate the first sensor
t = millis(); for(int i=0;i<10;i++) {
if (just_Passed_A==1 && just_Passed_B==-1 && t-a_Passed_Time averageA += analogRead(5);
>5000|| just_Passed_A==-1 && just_Passed_B==1 && t-b_Passed_ }
Time >5000){ averageA/=10;
long t = millis(); //Calibrate the second sensor
just_Passed_A = -1; for(int i=0;i<10;i++) {
just_Passed_B = -1; averageB+=analogRead(4);
myservo.write(170); }
} averageB/=10;

}
}

You might also like