Make light change only when the message contents change.

Change-Id: If81caf2107227ecb527401136ca6f9fa261d52ac
diff --git a/y2018/wpilib_interface.cc b/y2018/wpilib_interface.cc
index 6fba1fe..4a7fe1d 100644
--- a/y2018/wpilib_interface.cc
+++ b/y2018/wpilib_interface.cc
@@ -660,17 +660,31 @@
         LOG_STRUCT(DEBUG, "pneumatics info", to_log);
       }
 
+      static double last_red = -1.0;
+      static double last_green = -1.0;
+      static double last_blue = -1.0;
       status_light.FetchLatest();
       if (status_light.get()) {
         LOG_STRUCT(DEBUG, "writing", *status_light);
         // Not sure which of these is red vs green. We're not ready to use
-        // either,
-        // so just turn them off.
-        canifier_.SetLEDOutput(1.0, ::ctre::phoenix::CANifier::LEDChannelA);
-        canifier_.SetLEDOutput(1.0, ::ctre::phoenix::CANifier::LEDChannelB);
-        // Red
-        canifier_.SetLEDOutput(1 - status_light->red,
-                               ::ctre::phoenix::CANifier::LEDChannelC);
+        // either, so just turn them off.
+        if (status_light->green != last_green) {
+          canifier_.SetLEDOutput(1.0 - status_light->green,
+                                 ::ctre::phoenix::CANifier::LEDChannelA);
+          last_green = status_light->green;
+        }
+
+        if (status_light->blue != last_blue) {
+          canifier_.SetLEDOutput(1.0 - status_light->blue,
+                                 ::ctre::phoenix::CANifier::LEDChannelB);
+          last_blue = status_light->blue;
+        }
+
+        if (status_light->red != last_red) {
+          canifier_.SetLEDOutput(1.0 - status_light->red,
+                                 ::ctre::phoenix::CANifier::LEDChannelC);
+          last_red = status_light->red;
+        }
       }
     }
   }