Arm works

Added gravity and calibrated it.  Terifying...

Change-Id: I70babb1cd3b83ddd7a81f06fb2a75cefd55bcdb8
diff --git a/y2018/joystick_reader.cc b/y2018/joystick_reader.cc
index 2179606..def6df1 100644
--- a/y2018/joystick_reader.cc
+++ b/y2018/joystick_reader.cc
@@ -28,14 +28,13 @@
 namespace input {
 namespace joysticks {
 
-//TODO(Neil): Change button locations to real ones on driverstation.
 const ButtonLocation kIntakeDown(3, 9);
 const POVLocation kIntakeUp(3, 90);
 const ButtonLocation kIntakeIn(3, 12);
 const ButtonLocation kIntakeOut(3, 8);
 
-const ButtonLocation kArmDown(3, 3);
-const ButtonLocation kArmSwitch(3, 7);
+const ButtonLocation kArmDown(3, 12);
+const ButtonLocation kArmSwitch(3, 8);
 const ButtonLocation kArmScale(3, 6);
 
 const ButtonLocation kClawOpen(3, 5);
@@ -122,18 +121,17 @@
 
     if (data.IsPressed(kArmDown)) {
       // Put the arm down to the intake level.
-      new_superstructure_goal->arm_goal_position =
-          1;  // TODO(Neil): Add real value once we have it.
+      arm_goal_position_ = 0;
     } else if (data.IsPressed(kArmSwitch)) {
       // Put the arm up to the level of the switch.
-      new_superstructure_goal->arm_goal_position =
-          1;  // TODO(Neil): Add real value once we have it.
+      arm_goal_position_ = 1;
     } else if (data.IsPressed(kArmScale)) {
       // Put the arm up to the level of the switch.
-      new_superstructure_goal->arm_goal_position =
-          1;  // TODO(Neil): Add real value once we have it.
+      arm_goal_position_ = 1;
     }
 
+    new_superstructure_goal->arm_goal_position = arm_goal_position_;
+
     if (data.IsPressed(kClawOpen)) {
       new_superstructure_goal->open_claw = true;
     } else if (data.IsPressed(kClawClose)) {
@@ -168,6 +166,8 @@
 
   double robot_velocity_ = 0.0;
 
+  int arm_goal_position_ = 0;
+
   ::aos::common::actions::ActionQueue action_queue_;
 };