 	  driveDown();
   }
 }
+
+void desiredCameraPosChanged( const std_msgs::Int32& newPos){
+    desiredDegrees = newPos.data;
+    rotateToFaceAngle(desiredDegrees);
+}
+
+
   
   // increasing the count means we want to move clockwise (right)
   void driveUp()

double stepDegree = 0.094;
int desiredStep = 0;
// In testing it seems this is unecessary.
int DELAY = 0;

int CLOCKWISE = HIGH;
int COUNTERCLOCKWISE = LOW;

  digitalWrite(ENABLE, HIGH); //the motor should not make loud screeching
  nh.initNode();
  nh.subscribe(cvDegreeReader);
  //Serial.begin(9600);
}

void loop()
{
	nh.spinOnce();
        //if(Serial.available())
        //{
        //  rotateToFaceAngle(Serial.parseInt());
        //}

	delayMicroseconds(1000);
}

void rotateToFaceAngle(int angle)
{
    desiredDegrees = angle % 360;
    // Step = Degrees / steps per degree * gear ratio
    desiredStep = int(desiredDegrees/stepDegree)*19;
    Serial.print("Going to degree: ");
    Serial.print(desiredDegrees); 
    Serial.print(" (Desired step: ");
    Serial.print(desiredStep);
    Serial.print("; current step: ");
    Serial.println(stepCount);
  if(stepCount == desiredStep)
  {
	  return;
