Final Project – Garrett Jensen & Olivia Coughlin

22 Dec





After much deliberation and phases of design, Garrett and I were able to pull something together that

was both challenging and enjoyable to accomplish. Beginning with many different sustainable designs

for residential homes, we finally landed on a design for opening and closing window treatments. The

drapes went through multiple phases from a precedent consisting of string, to elastic fabric, then rubber

bands, to cloth bands, then finally back to elastic fabric.

One large piece of spandex material covered three ceiling to floor windows with four horizontal slits

across each window pane. Installing two servo motors hidden within the window mullions allow for

discreet, hands-free drape movement. We created a code for the dual servo motors to move 180

degrees simultaneously in a loop. Connected to thread and looped through small eyelets along the

ceiling and back down to the servo motors, the slits in the fabric have the ability to open and close

depending on the position of the servo motors.

The servo motors are on double loop per day rotation in which they rotate 180 degrees and then back

180 degrees. This motion is in synchronized with the time of day in order to open the drapes fullest

when the sun is at high noon, thus less direct sunlight through the windows and more ambient light.

Another idea we were thinking about installing is drape movement dependent on the twisting of a

potentiometer where the openness of the drapes would be user-controlled and interactive. This would

be simple reconstruction and code change.

We designed this mechanical circuit for the sustainability it can produce. With the ability to control the

daylighting in a home, this would be an energy-efficient product that would take advantage of natural

light at the perfect times. Though the final product could be tweaked to be even more functional and

aesthetic, it is a good starting point for what we were invisioning.


#include <Servo.h>

Servo myservo; // create servo object to control a servo
Servo myservo2;
int potpin = 0; // analog pin used to connect the potentiometer
int val;
int pos = 0;
int buttonPin = 2;
int buttonState = 0;// variable to read the value from the analog pin

void setup()
{ pinMode(buttonPin, INPUT);
myservo.attach(9); // attaches the servo on pin 9 to the servo object

void loop() {
buttonState = digitalRead(buttonPin);
if(buttonState == 1) {
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value

else {
for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(20); // waits 15ms for the servo to reach the position
for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(20); // waits 15ms for the servo to reach the position


Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s