Page 1

Elective Pamphlets

Responsive Analogue And Digital Prototyping Tutor:Flora Salim Zhou Shuying


RAD-P: Responsive Analogue and Digital Prototyping

Information is ubiquitous. There is an unprecedented volume of information in our physical and socially networked world that can be used to inform our design problems and the way we design. What happens if we get our digital models to respond to our physical environment? What are the possibilities for design if we are able to get our analogue models to converse with our digital models? How do we design an architectural model that responds to, interacts with, and adapts to the ambient environment, physical stimuli, or online social networks?

These questions are the subject of experiments in projects which explore the potential of new types of physical and sensor-driven input to create responsive analogue and digital design models.


Schedule

System

Send data from serial

Write data to servo

1


There is an unprecedented volume of information in our physical and socially networked world that can be used to inform our way of design. 2


Structure

3


Inspiration

Abstract shapes are created in the areas where the leaves overlap and light and shadow blend to create changes in translucency and shape.

Aplication Research

Sulpture|Ceiling|Window|Wall|Floor|Shelter

4


roate vertically along axis

Four semitransparent plates form a unit. Inside a unit each plate can rotate around the axis clockwise/anti-clockwise within the angle 0~90 degree.

5


roate horizontally around center

Subtractive primaries are those obtained by the subtraction of light: cyan, magenta and yellow. They combine to form black.We can change the hue, saturation and brightness to get more possibilities.

6


Digital Model

The range 0-1023 of the slinder shows the light value range in the environment. The slinder which controls the rotation of digital model can be replaced by changing data read (0-1023)from the analogue pin.

7


Hardware The light sensor of Arduino measures the external environmental conditions. Arduino exists in both digital and physical world. It passes this information to digital model and physical model and put them into effect.

#include <Servo.h> //attach Servo library *disables PWM on pins 9 and 10 #define BAUDRATE 9600 //Set the Baud Rate to an appropriate speed, 9600 is recommended #define BUFFSIZE 128 // buffer one command at a time, 12 bytes is longer than the max length char buffer[BUFFSIZE]; // this is the double buffer uint8_t bufferidx = 0; // a type of unsigned integer of length 8,16, or 32 bits uint16_t DPin13, DPin12, PWM11, PWM10, PWM9, DPin8, PWM6, PWM5, PWM3; //control Servos and Digital Outs int readCounter = 0; /*============================================================================== * GLOBAL VARIABLES *============================================================================*/ char *parseptr; char buffidx; int APin0 = 0; //declare all Analog In pins int APin1 = 0; int APin2 = 0; int APin3 = 0; int APin4 = 0; int APin5 = 0; int DPin2 = 0; //declare all Digital In pins int DPin4 = 0; int DPin7 = 0; Servo Servo1; // declare all Servo (PWM) Servo Servo2; Servo Servo3; int writecounter = 0; //declare the write counter int lowVal=500; int highVal=700; int currVal = 0; int mapX; int tempt; /*============================================================================== * SETUP() This code runs once *============================================================================*/ void setup() { pinMode(2, INPUT); // sets Digital In pin mode to INPUT (for on/off buttons) pinMode(4, INPUT); // sets Digital In pin mode to INPUT (for on/off buttons) pinMode(7, INPUT); // sets Digital In pin mode to INPUT (for on/off buttons) pinMode(9, OUTPUT); pinMode(8, OUTPUT); // sets the pin for digital output (for on/off LEDS) pinMode(12, OUTPUT); // sets the pin digital output (for on/off LEDS) pinMode(13, OUTPUT); // sets the pin digital output (for on/off LEDS) Serial.begin(BAUDRATE); // Start serial communication //blink LED when start calibrating digitalWrite(9, HIGH); delay(100); digitalWrite(9, LOW); delay(100); //calibrating light sensor - while calibrating cover and open the light sensor a few times for (int i = 0; i <200; i++) { digitalWrite(9, HIGH); int lightlevel = analogRead(0); Serial.println(lightlevel); if (lightlevel < lowVal) { lowVal = lightlevel; } if (lightlevel > highVal) { highVal = lightlevel; } delay(30); digitalWrite(9, LOW); } digitalWrite(9, HIGH); delay(50); lowVal = lowVal - 50; highVal = highVal + 50; Serial.print(“low level threshold: “); Serial.println(lowVal); Serial.print(“high level threshold: “); Serial.println(highVal); Servo1.attach(6);//attaching servo to pin 6 } /*============================================================================== * LOOP() This code loops *============================================================================*/ void loop() { //serialread(); // Call the Serial Write function //if (writecounter == 1500){ // Wait every 1500th loop to then call the Serial Write function //writecounter = 0; serialwrite(); //} // writecounter = writecounter +1; }

/*============================================================================== * WRITE FUNCTION() *============================================================================*/ void serialwrite(){ // READ SENSORS + BUTTONS FROM ARDUINO APin0 = analogRead(0); // Read analog input pin APin0= constrain(APin0, lowVal,highVal); mapX = map(APin0,lowVal,highVal,1,90); if (mapX > currVal) { if ((mapX - currVal) > 5) { currVal = mapX; } } else if (mapX < currVal) { if ((currVal - mapX) > 5) { currVal = mapX; } } else { currVal = mapX; } Servo1.write(currVal);

int ledPin=9;

if (currVal > 45) { digitalWrite(ledPin,HIGH); } else { digitalWrite(ledPin,LOW); } Serial.print(currVal); Serial.print(“,”); // Send the value and a comma

Serial.print(APin1); Serial.print(“,”); // Send the value and a comma Serial.print(APin2); Serial.print(“,”); // Send the value and a comma Serial.print(APin3); Serial.print(“,”); // Send the value and a comma Serial.print(APin4); Serial.print(“,”); // Send the value and a comma Serial.print(APin5); Serial.print(“,”); // Send the value and a comma Serial.print(DPin2); Serial.print(“,”); // Send the value and a comma Serial.print(DPin4); Serial.print(“,”); // Send the value and a comma Serial.print(DPin7); Serial.print(“,”); // Send the value and a comma Serial.println(“eol”); } ///*============================================================================== // * READ FUNCTION() // *============================================================================*/ uint32_t parsedecimal(char *str) { uint32_t d = 0; while (str[0] != 0) { if ((str[0] > ‘50’) || (str[0] < ‘0’)) return d; d *= 10; d += str[0] - ‘0’; str++; } return d; }

8


Prototyping Model

Prototyping Model

Inspiration :Abstract shapes are created in the areas where the leaves overlap and light and shadow blend to create changes in translucency and shape.

9


10


11


12


With thanks to tutors reviewers classmates


Elective Pamphlets

Title: Responsive Analogue and Digital Prototyping Tutor: Flora Salim, Jane Burry, Daniel Davis Pole: Expanded Field Date: Semester 2, 2010 This and other documented examples of elective subjects run as part of the RMIT University Architecture program can be found on issuu.com

RADP elective  

responsive analogue and digital prototyping

Read more
Read more
Similar to
Popular now
Just for you