diff --git a/y2018/BUILD b/y2018/BUILD
index 19284e8..67ad583 100644
--- a/y2018/BUILD
+++ b/y2018/BUILD
@@ -39,6 +39,7 @@
         "joystick_reader.cc",
     ],
     deps = [
+        ":status_light",
         "//aos/common:time",
         "//aos/common/actions:action_lib",
         "//aos/common/logging",
diff --git a/y2018/joystick_reader.cc b/y2018/joystick_reader.cc
index a5eaf14..81791e5 100644
--- a/y2018/joystick_reader.cc
+++ b/y2018/joystick_reader.cc
@@ -17,6 +17,7 @@
 #include "y2018/control_loops/drivetrain/drivetrain_base.h"
 #include "y2018/control_loops/superstructure/arm/generated_graph.h"
 #include "y2018/control_loops/superstructure/superstructure.q.h"
+#include "y2018/status_light.q.h"
 
 using ::frc971::control_loops::drivetrain_queue;
 using ::y2018::control_loops::superstructure_queue;
@@ -103,6 +104,17 @@
     drivetrain_input_reader_->HandleDrivetrain(data);
   }
 
+  void SendColors(float red, float green, float blue) {
+    auto new_status_light = status_light.MakeMessage();
+    new_status_light->red = red;
+    new_status_light->green = green;
+    new_status_light->blue = blue;
+
+    if (!new_status_light.Send()) {
+      LOG(ERROR, "Failed to send lights.\n");
+    }
+  }
+
   void HandleTeleop(const ::aos::input::driver_station::Data &data) {
     if (!data.GetControlBit(ControlBit::kEnabled)) {
       action_queue_.CancelAllActions();
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;
+        }
       }
     }
   }
