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.
|
|
#include "light.h"
rgb_message_t rgb_message; TIMING_MODE_T timing_mode; ERROR_MODE_T error_mode; timing_message_t timing_message;
/**
* @brief 设置灯的模式,高低中分别亮不同颜色的灯 * */ void light_module_set_rgb_mode(RGB_MODE_T mode) { if (mode == OPEN_RED_LIGHT) { port_led_r_set(true); port_led_g_set(false); port_led_b_set(false); rgb_message.turn_off_the_mode_before_rgb = OPEN_RED_LIGHT; } else if (mode == OPEN_GREEN_LIGHT) { port_led_r_set(false); port_led_g_set(true); port_led_b_set(false); rgb_message.turn_off_the_mode_before_rgb = OPEN_GREEN_LIGHT; } else if (mode == OPEN_BLUE_LIGHT) { port_led_r_set(false); port_led_g_set(false); port_led_b_set(true); rgb_message.turn_off_the_mode_before_rgb = OPEN_BLUE_LIGHT; } else if (mode == CLOSE_RGB_LIGHT) { rgb_message.turn_off_the_mode_before_rgb = OPEN_BLUE_LIGHT; port_led_r_set(false); port_led_g_set(false); port_led_b_set(false); } } /**
* @brief 设置rgb闪烁或者不闪烁 * * @param mode */ void light_module_set_rgb_flicker_mode(bool state) { if (state == false) { rgb_message.rgb_flicker_mode = false; } else if (state == true) { rgb_message.rgb_flicker_mode = true; } }
void process_rgb_flicker_mode() { static uint32_t rgb_flicker_ticket = 0; static uint8_t rgb_ticket_count = 0; if (port_haspassedms(rgb_flicker_ticket) > 1000) { rgb_flicker_ticket = get_sys_ticket(); if (rgb_ticket_count < 3) { // turn_off_the_mode_before_rgb保存了关闭之前的RGB亮灯的模式
light_module_set_rgb_mode(rgb_message.turn_off_the_mode_before_rgb); } else { light_module_set_rgb_mode(CLOSE_RGB_LIGHT); rgb_ticket_count = 0; } rgb_ticket_count++; } }
/**
* @brief 定时30min 60min 90min 120min分别打开led3 led2 led1 led0灯 * * @param mode */ void light_module_set_timing_light_mode(TIMING_MODE_T mode) { if (mode == OPEN_ONE_LED) { port_led0_set(true); port_led1_set(false); port_led2_set(false); port_led3_set(false); } else if (mode == OPEN_TWO_LED) { port_led0_set(true); port_led1_set(true); port_led2_set(false); port_led3_set(false); } else if (mode == OPEN_THREE_LED) { port_led0_set(true); port_led1_set(true); port_led2_set(true); port_led3_set(false); } else if (mode == OPEN_FOUR_LED) { port_led0_set(true); port_led1_set(true); port_led2_set(true); port_led3_set(true); } else if (mode == CLOSE_ALL_LED) { port_led0_set(false); port_led1_set(false); port_led2_set(false); port_led3_set(false); } timing_message.now_timing_mode=mode; }
/**
* @brief 不同错误状态下灯的闪烁状态 * * @param mode */ void light_module_set_error_light_mode(uint8_t mode) { if (mode == ERROR_MODE0) { port_led0_set(false); port_led1_set(false); port_led2_set(false); port_led3_set(false); } else if (mode == ERROR_MODE1) { port_led0_set(false); port_led1_set(false); port_led2_set(false); port_led3_set(false); } else if (mode == ERROR_MODE2) { port_led0_set(false); port_led1_set(false); port_led2_set(false); port_led3_set(false); } else if (mode == ERROR_MODE3) { port_led0_set(false); port_led1_set(false); port_led2_set(false); port_led3_set(false); } }
/**
* @brief 关闭rgb,关闭led0~led3 * */ void light_module_close_all_light(void) { light_module_set_rgb_mode(CLOSE_RGB_LIGHT); light_module_set_timing_light_mode(CLOSE_ALL_LED); light_module_set_rgb_flicker_mode(false); }
/**
* @brief 测试按键控制RGB的亮灭 * */ void test_set_rgb_mode(void) { printf("try_test_set_rgb_mode\r\n"); static int i = 0; if (i == 0) { i = 1; light_module_set_rgb_mode(OPEN_RED_LIGHT); } else if (i == 1) { i = 2; light_module_set_rgb_mode(OPEN_GREEN_LIGHT); } else if (i == 2) { i = 3; light_module_set_rgb_mode(OPEN_BLUE_LIGHT); } else if (i == 3) { i = 0; light_module_set_rgb_mode(CLOSE_RGB_LIGHT); } } /**
* @brief 测试按键控制led0~led3的亮灭 * */ void test_set_led_mode(void) { printf("try_test_set_led_mode\r\n"); static int j = 0; if (j == 0) { j = 1; light_module_set_timing_light_mode(OPEN_ONE_LED); } else if (j == 1) { j = 2; light_module_set_timing_light_mode(OPEN_TWO_LED); } else if (j == 2) { j = 3; light_module_set_timing_light_mode(OPEN_THREE_LED); } else if (j == 3) { j = 4; light_module_set_timing_light_mode(OPEN_FOUR_LED); } else if (j == 4) { j = 0; light_module_set_timing_light_mode(CLOSE_ALL_LED); } }
/**
* @brief 测试按键控制rgb闪烁或者不闪烁 * */ void test_set_rgb_flicker_mode(void) { printf("test_light_module_set_rgb_flicker_mode\r\n"); static bool m = false; if (m == 0) { light_module_set_rgb_flicker_mode(true); } else if (m == 1) { light_module_set_rgb_flicker_mode(false); } m = !m; }
|