top of page

Data Log 7 -

 

To anyone who receives this transmission, I want you to know that I have been reassigned for a recognition mission in Milan, I will be absent for one week. Everywhere around me is the chaos of unfinished tasks, things still to do, dreams still to accomplish. Sunayana Bhargava has taken over as head of operations here in London. I take my leave and in doing so abandon you to Sunayana's accounts, they may be fragmentary as she is in full mission; fear not though, the last account I had of her was on day 37, I hope she is all right, over.


From Sunayana's data Logs:

 

Log 12 ~ Submitted to the KCL corporation for record purposes at 1400 hours Day 33
 

The hinged shelves were always a necessary construction for the observatory, as they function as core enablers between the rotation motor cogs and the toothed timing belt. Largely constructed using plywood (and some other types of wood I cannot identify), the trapezium shaped shelves are secured into the fibreglass extension of the dome, and free to pivot approximately 90 degrees about this point. The plywood shelves suffered from excessive flexibility and vibration in their early days, so a rectangular plank of wood was bolted into the main body of each shelf to stiffen it and prevent its structure from weakening. The dome motors engage with the belt securely via a torsion bar.

 

The function of such a device is to use compressive stress (from a spring, in our case) to mediate a continuous push from the motor and cog laden shelf to the belt until it is securely engaged. A picture is probably able to explain this better [insert picture]. In order to tighten the shelves until they make contact with the belt, a knob is turned, which, in doing so, screws a rod into a nut attached to the fibreglass lip of the building. This provides the necessary leverage for the cogs to push against the dome and rotate the upper half of the observatory, whilst the bottom half stays rigidly in place.

 

 

Log 17 ~ Submitted to the KCL corporation for record purposes at 2000 hours Day 34

 

The fuse box is the beating heart serving all of the electronic veins and arteries that connect to external components. Such components include the telescope, filter wheel, motors, and the Arduino microcontroller and its relays. With one end of the wiring going to the power supply (a 12V car battery), the other end weaves through the fuse box, meets the relevant fuse, before reaching the device at the other end. The fuse box was constructed out of a modest wooden drawer, topped with a thin wooden cover cut out by hand. With holes drilled on either end to feed the wires into and out of the box, it has proved to be a good, bankable size for housing all of the electronics required to drive the observatory, whilst itself being neatly tucked into the corner, living out a fantasy most run-of-the-mill wooden drawers can still only dream of.

 

Log 18 ~ Submitted to the KCL corporation for record purposes at 0900 hours Day 37

 

Below is the latest version of the code which allows the dome to adapt to the orientation of the telescope:

 

const int sensorPin = A0;

const int sensorPin1 = A1;

 

void setup(){

    Serial.begin(9600); // open a serial port for debugging

   

    for(int pinNumber = 2; pinNumber<4; pinNumber++){  //Set Pins 2,3 as Output and Set the Value to LOW (IR SENSOR 1)

      pinMode(pinNumber,OUTPUT);

     

    for(int pinNumber = 5; pinNumber<7; pinNumber++){  //Set Pins 5,6 as Output and Set the Value to LOW {IR SENSOR 2)

      pinMode(pinNumber,OUTPUT);

    

      pinMode(10, OUTPUT);       

      pinMode(11, OUTPUT);  

      digitalWrite(pinNumber,LOW); 

    }

    }

}

 

void loop() {

   // read the input on analog pin 0:

   int sensorValue = analogRead(A0);

   // read the input on analog pin 1:

   int sensorValue1 = analogRead(A1);

   // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):

   float voltage = sensorValue * (5.0 / 1023.0);

   float voltage1 = sensorValue1 * (5.0 / 1023.0);

   // print out the value you read:

   //Serial.println(voltage);

 

 

 

  digitalWrite(2,LOW);                //Turn off LED at Pin 2

  digitalWrite(3,LOW);                //Turn off LED at Pin 3

 

  digitalWrite(5,LOW);                //Turn off LED at Pin 5

  digitalWrite(6,LOW);                //Turn off LED at Pin 6

 

  // THESE ARE THE TWO OUTERMOST SENSORS; LEDs 1 and 5

  //PINS 2, 3 CORRESPOND TO SENSOR 1 AND PINS 5,6 CORRESPOND TO SENSOR 2

  // BOTH SENSORS ARE ACTIVE HERE

 

 

  delay(5); //wait for 5 milliseconds

 

   for (int thisSensor = 2; thisSensor < 4; thisSensor++) {

        int sensorValue = analogRead(thisSensor);

       // Serial.print(sensorValue, DEC);

 

        // if this is the last sensor value, end with a println().

        // otherwise, print a comma:

        if (thisSensor == 3) {

           Serial.println();

        } else {

           Serial.print(",");

        }

     }

  

     for (int thisSensor = 5; thisSensor < 7; thisSensor++) {

        int sensorValue1 = analogRead(thisSensor);

       // Serial.print(sensorValue, DEC);

 

        // if this is the last sensor value, end with a println().

        // otherwise, print a comma:

        if (thisSensor == 6) {

           Serial.println();

        } else {

           Serial.print(",");

        }

     }

 

  // Apply a switch case statement which determines the distance at which we can assume an obstacle has been detected.

 

const int sensorMin = 0;      // sensor minimum?

const int sensorMax = 300;    // sensor maximum?

 

  int range = map(sensorValue, sensorMin, sensorMax, 0, 3);

 

  // do something different depending on the

  // range value:

  switch (range) {

  case 0:    // you are either too close to the sensor or it is clear

    Serial.println("clear");

    break;

  case 1:    // your hand is within close range of the sensor

    Serial.println("obstacle detected");

    break;

  case 2:    // your hand is within moderate range of the sensor

    Serial.println("obstacle detected");

    break;

  case 3:    // your hand is outside the range of the sensor

    Serial.println("clear");

    break;

  }

 

    int range1 = map(sensorValue1, sensorMin, sensorMax, 0, 3);

 

  // do something different depending on the

  // range value:

  switch (range1) {

  case 0:    // you are either too close to the sensor or it is clear

    Serial.println("clear");

    break;

  case 1:    // your hand is within close range of the sensor

    Serial.println("obstacle detected");

    break;

  case 2:    // your hand is within moderate range of the sensor

    Serial.println("obstacle detected");

    break;

  case 3:    // your hand is outside the range of the sensor

    Serial.println("clear");

    break;

  }

 

  // APPLY THE FOLLOWING IF STATEMENT TO ACTIVATE THE SWITCH IF AN OBSTACLE IS DETECTED

  // NOW TWO SENSORS ARE BEING USED. IT IS POSSIBLE THAT ONE OF THEM WILL DETECT AN OBSTACLE AND THE OTHER WON'T.

  // THE CODE IS PROGRAMMED TO

 

  if ((sensorValue < 75) && (sensorValue1 < 75)) {

    digitalWrite(10, LOW);

    digitalWrite(11, LOW);

  }

     

  // WILL REMOVE DELAY LATER ON WHEN NO LONGER USING RELAYS FOR TESTING OUTPUT!

  else {

     digitalWrite(10, HIGH);   // turn the LED on (HIGH is the voltage level)

     digitalWrite(11, HIGH);   // turn the LED on (HIGH is the voltage level)

     delay(1000);               // wait for a second

     digitalWrite(10, LOW);    // turn the LED off by making the voltage LOW

     digitalWrite(11, LOW);    // turn the LED off by making the voltage LOW

     delay(1000);

 

 

  }

  }

 

 

bottom of page