You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
2.4 KiB
131 lines
2.4 KiB
static void update_lights() |
|
{ |
|
switch(led_mode){ |
|
case NORMAL_LEDS: |
|
update_motor_light(); |
|
update_GPS_light(); |
|
break; |
|
|
|
case AUTO_TRIM_LEDS: |
|
dancing_light(); |
|
break; |
|
} |
|
} |
|
|
|
static void update_GPS_light(void) |
|
{ |
|
// GPS LED on if we have a fix or Blink GPS LED if we are receiving data |
|
// --------------------------------------------------------------------- |
|
switch (g_gps->status()){ |
|
|
|
case(2): |
|
digitalWrite(C_LED_PIN, HIGH); //Turn LED C on when gps has valid fix. |
|
break; |
|
|
|
case(1): |
|
if (g_gps->valid_read == true){ |
|
GPS_light = !GPS_light; // Toggle light on and off to indicate gps messages being received, but no GPS fix lock |
|
if (GPS_light){ |
|
digitalWrite(C_LED_PIN, LOW); |
|
}else{ |
|
digitalWrite(C_LED_PIN, HIGH); |
|
} |
|
g_gps->valid_read = false; |
|
} |
|
break; |
|
|
|
default: |
|
digitalWrite(C_LED_PIN, LOW); |
|
break; |
|
} |
|
} |
|
|
|
static void update_motor_light(void) |
|
{ |
|
if(motor_armed == false){ |
|
motor_light = !motor_light; |
|
|
|
// blink |
|
if(motor_light){ |
|
digitalWrite(A_LED_PIN, HIGH); |
|
}else{ |
|
digitalWrite(A_LED_PIN, LOW); |
|
} |
|
}else{ |
|
if(!motor_light){ |
|
motor_light = true; |
|
digitalWrite(A_LED_PIN, HIGH); |
|
} |
|
} |
|
} |
|
|
|
static void dancing_light() |
|
{ |
|
static byte step; |
|
|
|
if (step++ == 3) |
|
step = 0; |
|
|
|
switch(step) |
|
{ |
|
case 0: |
|
digitalWrite(C_LED_PIN, LOW); |
|
digitalWrite(A_LED_PIN, HIGH); |
|
break; |
|
|
|
case 1: |
|
digitalWrite(A_LED_PIN, LOW); |
|
digitalWrite(B_LED_PIN, HIGH); |
|
break; |
|
|
|
case 2: |
|
digitalWrite(B_LED_PIN, LOW); |
|
digitalWrite(C_LED_PIN, HIGH); |
|
break; |
|
} |
|
} |
|
static void clear_leds() |
|
{ |
|
digitalWrite(A_LED_PIN, LOW); |
|
digitalWrite(B_LED_PIN, LOW); |
|
digitalWrite(C_LED_PIN, LOW); |
|
motor_light = false; |
|
led_mode = NORMAL_LEDS; |
|
} |
|
|
|
#if MOTOR_LEDS == 1 |
|
static void update_motor_leds(void) |
|
{ |
|
if (motor_armed == true){ |
|
if (low_batt == true){ |
|
// blink rear |
|
static bool blink = false; |
|
|
|
if (blink){ |
|
digitalWrite(RE_LED, HIGH); |
|
digitalWrite(FR_LED, HIGH); |
|
digitalWrite(RI_LED, LOW); |
|
digitalWrite(LE_LED, LOW); |
|
}else{ |
|
digitalWrite(RE_LED, LOW); |
|
digitalWrite(FR_LED, LOW); |
|
digitalWrite(RI_LED, HIGH); |
|
digitalWrite(LE_LED, HIGH); |
|
} |
|
blink = !blink; |
|
}else{ |
|
digitalWrite(RE_LED, HIGH); |
|
digitalWrite(FR_LED, HIGH); |
|
digitalWrite(RI_LED, HIGH); |
|
digitalWrite(LE_LED, HIGH); |
|
} |
|
}else { |
|
digitalWrite(RE_LED, LOW); |
|
digitalWrite(FR_LED, LOW); |
|
digitalWrite(RI_LED, LOW); |
|
digitalWrite(LE_LED, LOW); |
|
} |
|
} |
|
#endif |
|
|
|
|
|
|