Monorail Visual Documentation System (MVDS)

Model_Pic

The MVDS is an idea I came up with when thinking about ways one documents their work. Often times in architecture, the documentation process is static, only consisting of photos. This does not allow one to experience what a space may feel like. With the MVDS, a person could potentially get down to eye level and move around and through a model to simulate what one may experience when circulating through the space in real life. This system differs from a 3d walk-through of a 3d model because it allows the user or client to control the movements and actions in real time while receiving tactile feedback. The system is simple. Using an RF transmitter with a keyfob, a continuous rotation servo motor, an Arduino Uno and a GoPro, one can control a “car” that drives around a track wirelessly while recording its movements. By using a GoPro one can also view the movement around the track in real time.

Caddy_Pic

[vsw id=”yAHDHNP7u5o” source=”youtube” width=”768″ height=”432″ autoplay=”no”]

The car caddy system houses an Arduino Uno, a Momentary type Wireless RF Receiver, a continuous rotation servo motor and a 9v battery for power

Rail_Pic

The rail system consists of two pieces of 1/8″ plywood that are laminated together. It sits on 1/2″ dowel posts that support the rail.

[vsw id=”wszpVMddo0k” source=”youtube” width=”768″ height=”432″ autoplay=”no”]

Arduino_Uno    Continuous_Rotation_ServoRF_Keyfob    RF_Transmitter

The Components shown above are clickable and will bring you to their corresponding webpages on the Adafruit website.

Fritzing Diagram

This Fritzing Diagram contains the schematic information of the board and its components attached to each other.

Code:

  #include <Servo.h>
 int button1 = 2;
 int button2 = 4;
 int button3 = 3;
 int button4 = 5;
 Servo servo1;

 bool minimum = true;
 bool maximum = false;

 void setup()
 {
 
 pinMode (button1, INPUT);
 pinMode (button2, INPUT);
 pinMode (button3, INPUT);
 pinMode (button4, INPUT);
 servo1.attach (7);
 servo1.write (0);
 }
 void loop()
 {
 if ((digitalRead(button1) == HIGH) && minimum)
 {
 for (int i = 0; i < 360; i++)
 {
 servo1.write(i);
 delay (0);
 }
 minimum = false;
 maximum = true;
 }
 if ((digitalRead(button2)) == HIGH && maximum)
 {
 for (int i = 360; i > 0; i--)
 {
 servo1.write(i);
 delay (0);
 }
 minimum = true;
 maximum = false;
 }
 if ((digitalRead(button3) == HIGH))
 {
 pinMode (7, LOW);
 }
 if ((digitalRead(button4) == HIGH))
 {
 pinMode (7, HIGH);
 }
 }