         mode %= NUM_MODE_ENUMS;
         clear_screen();
     }
-
-    if ( mode == MODE_LCD_TIMER)
+    if ( mode == MODE_DISCHARGE)
+    {
+        if ( g_Buttons.up_button != 0 &&
+            g_LastButtons.up_button == 0)
+        {
+            digitalWrite(3, HIGH);
+        }
+        if ( g_Buttons.bottom_button != 0 &&
+            g_LastButtons.bottom_button == 0)
+        {
+            digitalWrite(3, LOW);
+        }
+    }
+    else if ( mode == MODE_CHARGE)
+    {
+        if ( g_Buttons.up_button != 0 &&
+            g_LastButtons.up_button == 0)
+        {
+            digitalWrite(9, HIGH);
+        }
+        if ( g_Buttons.bottom_button != 0 &&
+            g_LastButtons.bottom_button == 0)
+        {
+            digitalWrite(9, LOW);
+        }
+    }
+    else if ( mode == MODE_LCD_TIMER)
     {
         // Serial.write("mode timer");
         if ( g_Buttons.up_button != 0 &&

    MODE_TIME,
    MODE_VOLTAGE,
    MODE_LCD_TIMER,
    NUM_MODE_ENUMS,
    MODE_SERIAL_MON,
};

{
    char line1[24] = "                         ";
    char line2[24] = "                         ";
    sprintf(line1, "%02d:%02d:%02d%10s", hours, minutes, seconds, "");
    sprintf(line2, "%16s", "");

    switch ( _mode )
    {
    case MODE_VCC:
        sprintf(line1, "%02d:%02d:%02d                ", hours, minutes, seconds);
        sprintf(line2, "VCC: %sV", str_vcc );
        break;
    case MODE_TIME:
