diff --git a/Core/Inc/main.h b/Core/Inc/main.h index 9916c22..2ce8c2d 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -144,7 +144,7 @@ void Error_Handler(void); #define STS_LAMP_BAR_PWM_TIM_PERIOD (240 - 1) #define STS_LAMP_BAR_HTIM htim1 #define STS_LAMP_BAR_LED_NUM (60) //60 for 46CM length LED strip -#define LED_COUNT 15 // for 30 cm lamp bar +#define LED_COUNT 18 // for 30 cm lamp bar #define WSDATA_PORT_PIN_PA8 //#define WSDATA_PORT_PIN_PA9 diff --git a/Core/Inc/sts_lamp_bar.h b/Core/Inc/sts_lamp_bar.h index 30a97a2..55faab0 100644 --- a/Core/Inc/sts_lamp_bar.h +++ b/Core/Inc/sts_lamp_bar.h @@ -29,7 +29,7 @@ extern "C" { #define DEFAULT_SATURATION 50 // 0 - 100 S:Saturation, 0~100 #define DEFAULT_BRIGHTNESS 50 // 0 - 100 V:Value of lightness, 0~100 -#define DEFAULT_LUMINANCE_LEVEL (30) +#define DEFAULT_LUMINANCE_LEVEL (255) #define STS_Status_Door_Close (0) //Normal Close NC:Open **2024-07-15 changed #define STS_Status_Door_Open (1) //Normal Close NC:Close **2024-07-15 changed #define STS_Status_SOS_Pushdown (0) //Normal Open NO:Open @@ -40,22 +40,23 @@ extern "C" { #define STS_Status_Alarm_Reset_Release (1) //Normal Open NO:Close# enum sts_lamp_color { - STS_DARK = 0, //灭:0, Code 0x00 - STS_GREEN, //绿:1 0 1 0 code 0x01 0b0000 0001 - STS_RED, //红:2 1 0 0 code 0x02 0b0000 0010 - STS_BLUE, //蓝:3 0 0 1 code 0x03 0b0000 0011 - STS_YELLOW, //黄:4 1 1 0 code 0x04 0b0000 0100 - STS_PINK, //紫:5 1 0 1 code 0x05 0b0000 0101 - STS_CYAN, //青:6 0 1 1 code 0x06 0b0000 0110 - STS_WHITE, //白:7 1 1 1 code 0x07 0b0000 0111 - STS_COLOR_MAX, //8: MAX NUM OF COLORS 0x08 0b0000 1000 + STS_DARK = 0, //灭:0, 0 0 0 0 Code 0x00 + STS_GREEN, //绿:1, 0 0 0 1 code 0x01 0b0000 0001 + STS_RED, //红:2, 0 0 1 0 code 0x02 0b0000 0010 + STS_BLUE, //蓝:3, 0 0 1 1 code 0x03 0b0000 0011 + STS_YELLOW, //黄:4, 0 1 0 0 code 0x04 0b0000 0100 + STS_PINK, //紫:5, 0 1 0 1 code 0x05 0b0000 0101 + STS_CYAN, //青:6, 0 1 1 0 code 0x06 0b0000 0110 + STS_WHITE, //白:7, 0 1 1 1 code 0x07 0b0000 0111 + STS_COLOR_MAX, //8: 8, 1 0 0 0 MAX NUM OF COLORS 0x08 0b0000 1000 STS_GREEN_DARK=0x10, //0b0001 0000 GREEN DARK - STS_RED_DARK=0x20, //0b0010 0000, - STS_RED_GREEN=0x21, - STS_RED_BLUE=0x23, //0b0010 0011 RED BLUE FLASH + STS_RED_DARK=0x20, //0b0010 0000,RED DARK + STS_RED_GREEN=0x21, //0b0010 0001, RED, GREEN + STS_RED_BLUE=0x23, //0b0010 0011 RED BLUE + STS_RED_WHITE=0x27, //0b0010 0111 RED WHITE STS_BLUE_DARK=0x30, //0b0011 0000 BLUE DARK - STS_BLUE_GREEN=0x31, + STS_BLUE_GREEN=0x31, //0b0011 0001 BLUE GREEN STS_GREENDARK=0x41, // GREEN FLASH 'A' STS_REDDARK=0x42, // RED FLASH 'B' diff --git a/Core/Src/main.c b/Core/Src/main.c index 315837d..dbc7f98 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -99,9 +99,9 @@ int main(void) /* USER CODE BEGIN 2 */ STS_Sensor_Init(); STS_Sensor_Prepare(); - while(1) + //while(1) { - STS_Lamp_Bar_Self_Test_Fade(); + // STS_Lamp_Bar_Self_Test_Fade(); } /* USER CODE END 2 */ #if 0 diff --git a/Core/Src/sts_lamp_bar.c b/Core/Src/sts_lamp_bar.c index acbcb58..35b99bf 100644 --- a/Core/Src/sts_lamp_bar.c +++ b/Core/Src/sts_lamp_bar.c @@ -178,48 +178,47 @@ void STS_Lamp_Bar_Set_RGB_Color_Flow(void) static void STS_Lamp_Bar_Set_RGB_Color_FadeIn(uint8_t red, uint8_t green, uint8_t blue, uint8_t start_position, uint8_t fade_length) { - // set tail length 1/3 - uint8_t tail_len = LED_COUNT /2; + uint8_t fade_len = fade_length; - for (uint8_t idx = LED_COUNT; idx >0 ; idx--) + for (uint8_t idx = 0; idx < LED_COUNT ; idx++) { - if (idx > tail_len) { + if (idx >= start_position) { // the most far tail end, the darker, the most head/first, the brighter - uint8_t rev = tail_len + 1 - idx; + uint8_t rev = idx - fade_len ; - uint8_t lin = 0xFF - (rev * 0xFF / tail_len); + uint8_t lin = (rev * 0xFF / fade_len); uint8_t bri = (lin * lin) >> 8; - STS_WS2812B_Set_RGB((red*bri)>>8, (green*bri)>>8, (blue*bri)>>8, ((idx + start_position)%LED_COUNT)); + STS_WS2812B_Set_RGB((red*bri)>>8, (green*bri)>>8, (blue*bri)>>8, ((idx))); } else { - // longer than tail, set to dark - STS_WS2812B_Set_RGB(red, green, blue, idx); + // shorter than tail, set to dark + //STS_WS2812B_Set_RGB(red, green, blue, idx); + STS_WS2812B_Set_RGB(0, 0, 0, idx); } } } static void STS_Lamp_Bar_Set_RGB_Color_FadeOut(uint8_t red, uint8_t green, uint8_t blue, uint8_t start_position, uint8_t fade_length) { - // set tail length 1/3 - uint8_t tail_len = LED_COUNT /2; - + uint8_t fade_len = fade_length; for (uint8_t idx = 0; idx < LED_COUNT; idx++) { - if (idx < tail_len) { + if ((idx >= start_position) && (idx <= (start_position+fade_len))) { // the most far tail end, the darker, the most head/first, the brighter - uint8_t rev = tail_len - 1 - idx; - //uint8_t lin = 0xFF - (rev * 0xFF / tail_len); - //uint8_t bri = (lin * lin) >> 8; - uint8_t lin = (idx/(2*tail_len)); - uint8_t bri = lin; + uint8_t rev = fade_len -idx - start_position; + uint8_t lin = (rev * 0xFF / fade_length); + uint8_t bri = (lin * lin) >> 8; + //uint8_t lin = (idx/(2*tail_len)); + //uint8_t bri = lin; - //STS_WS2812B_Set_RGB((red*bri)>>8, (green*bri)>>8, (blue*bri)>>8, ((idx + start_position)%LED_COUNT)); - STS_WS2812B_Set_RGB((red*bri), (green*bri), (blue*bri), ((idx + start_position)%LED_COUNT)); + STS_WS2812B_Set_RGB((red*bri)>>8, (green*bri)>>8, (blue*bri)>>8, ((idx))); + //STS_WS2812B_Set_RGB((red*bri), (green*bri), (blue*bri), ((idx + start_position)%LED_COUNT)); - } else { - // longer than tail, set to dark - STS_WS2812B_Set_RGB(red, green, blue, idx); + } else if ((idx < start_position)||(idx > fade_len)) { + // shorter than start position or longer than fade length, set to dark + //STS_WS2812B_Set_RGB(red, green, blue, idx); + STS_WS2812B_Set_RGB(0, 0, 0, idx); } } } @@ -231,7 +230,6 @@ void STS_Lamp_Bar_Refresh(void) void STS_Lamp_Bar_Set_STS_RGB_Color_FadeIn(uint8_t sts_lamp_color, uint8_t max_lum_level, uint8_t fade_length) { - if (sts_lamp_color <=8) { switch (sts_lamp_color) @@ -240,27 +238,28 @@ void STS_Lamp_Bar_Set_STS_RGB_Color_FadeIn(uint8_t sts_lamp_color, uint8_t max_l STS_Lamp_Bar_Set_RGB_Color(0x0, 0x0, 0x0); break; case STS_GREEN: - STS_Lamp_Bar_Set_RGB_Color_FadeIn(0x0, max_lum_level, 0x0, LED_COUNT/2, LED_COUNT/2); + STS_Lamp_Bar_Set_RGB_Color_FadeIn(0x0, max_lum_level, 0x0, LED_COUNT/2, fade_length); break; case STS_RED: - STS_Lamp_Bar_Set_RGB_Color_FadeIn(max_lum_level, 0x0, 0x0, LED_COUNT/2, LED_COUNT/2); + STS_Lamp_Bar_Set_RGB_Color_FadeIn(max_lum_level, 0x0, 0x0, LED_COUNT/2, fade_length); break; case STS_BLUE: - STS_Lamp_Bar_Set_RGB_Color_FadeIn(0x0, 0x0, max_lum_level, LED_COUNT/2, LED_COUNT/2); + STS_Lamp_Bar_Set_RGB_Color_FadeIn(0x0, 0x0, max_lum_level, LED_COUNT/2, fade_length); break; case STS_YELLOW: - STS_Lamp_Bar_Set_RGB_Color_FadeIn(max_lum_level, max_lum_level, 0x0, LED_COUNT/2, LED_COUNT/2); + STS_Lamp_Bar_Set_RGB_Color_FadeIn(max_lum_level, max_lum_level, 0x0, LED_COUNT/2, fade_length); break; case STS_PINK: - STS_Lamp_Bar_Set_RGB_Color_FadeIn(max_lum_level, 0x0, max_lum_level, LED_COUNT/2, LED_COUNT/2); + STS_Lamp_Bar_Set_RGB_Color_FadeIn(max_lum_level, 0x0, max_lum_level, LED_COUNT/2, fade_length); break; case STS_CYAN: - STS_Lamp_Bar_Set_RGB_Color_FadeIn(0x0, max_lum_level, max_lum_level, LED_COUNT/2, LED_COUNT/2); + STS_Lamp_Bar_Set_RGB_Color_FadeIn(0x0, max_lum_level, max_lum_level, LED_COUNT/2, fade_length); break; case STS_WHITE: - STS_Lamp_Bar_Set_RGB_Color_FadeIn(max_lum_level, max_lum_level, max_lum_level, LED_COUNT/2, LED_COUNT/2); + STS_Lamp_Bar_Set_RGB_Color_FadeIn(max_lum_level, max_lum_level, max_lum_level, LED_COUNT/2, fade_length); break; } + } } @@ -274,27 +273,28 @@ void STS_Lamp_Bar_Set_STS_RGB_Color_FadeOut(uint8_t sts_lamp_color, uint8_t max_ STS_Lamp_Bar_Set_RGB_Color(0x0, 0x0, 0x0); break; case STS_GREEN: - STS_Lamp_Bar_Set_RGB_Color_FadeOut(0x0, max_lum_level, 0x0, 0, LED_COUNT/2); + STS_Lamp_Bar_Set_RGB_Color_FadeOut(0x0, max_lum_level, 0x0, 0, fade_length); break; case STS_RED: - STS_Lamp_Bar_Set_RGB_Color_FadeOut(max_lum_level, 0x0, 0x0, 0, LED_COUNT/2); + STS_Lamp_Bar_Set_RGB_Color_FadeOut(max_lum_level, 0x0, 0x0, 0, fade_length); break; case STS_BLUE: - STS_Lamp_Bar_Set_RGB_Color_FadeOut( 0x0, 0x0, max_lum_level, 0, LED_COUNT/2); + STS_Lamp_Bar_Set_RGB_Color_FadeOut( 0x0, 0x0, max_lum_level, 0, fade_length); break; case STS_YELLOW: - STS_Lamp_Bar_Set_RGB_Color_FadeOut(max_lum_level, max_lum_level, 0x0, 0, LED_COUNT/2); + STS_Lamp_Bar_Set_RGB_Color_FadeOut(max_lum_level, max_lum_level, 0x0, 0, fade_length); break; case STS_PINK: - STS_Lamp_Bar_Set_RGB_Color_FadeOut(max_lum_level, 0x0, max_lum_level, 0, LED_COUNT/2); + STS_Lamp_Bar_Set_RGB_Color_FadeOut(max_lum_level, 0x0, max_lum_level, 0, fade_length); break; case STS_CYAN: - STS_Lamp_Bar_Set_RGB_Color_FadeOut(0x0, max_lum_level, max_lum_level, 0, LED_COUNT/2); + STS_Lamp_Bar_Set_RGB_Color_FadeOut(0x0, max_lum_level, max_lum_level, 0, fade_length); break; case STS_WHITE: - STS_Lamp_Bar_Set_RGB_Color_FadeOut(max_lum_level, max_lum_level, max_lum_level, 0, LED_COUNT/2); + STS_Lamp_Bar_Set_RGB_Color_FadeOut(max_lum_level, max_lum_level, max_lum_level, 0, fade_length); break; } + } } @@ -349,7 +349,7 @@ void STS_Lamp_Bar_Self_Test_Simple(void) lum_level = 1; do { STS_Lamp_Bar_Set_STS_RGB_Color(color, lum_level); - HAL_Delay(30); + HAL_Delay(20); lum_level += 10; } while (lum_level < 255); STS_Lamp_Bar_Set_Dark(); @@ -360,31 +360,31 @@ void STS_Lamp_Bar_Self_Test_Simple(void) void STS_Lamp_Bar_Self_Test_Fade(void) { uint8_t color=0, lum_level=DEFAULT_LUMINANCE_LEVEL; - APP_LOG(TS_OFF, VLEVEL_H, "\r\n [#1] RGB Space Fade Out Fade In Testing Start\r\n"); + APP_LOG(TS_OFF, VLEVEL_M, "\r\n [#1] RGB Space Fade Out Testing Start\r\n"); for (color=STS_GREEN; color < STS_COLOR_MAX; color++) { lum_level = 10; do { - STS_Lamp_Bar_Set_STS_RGB_Color_FadeOut(color, lum_level, 10); - HAL_Delay(1000); - lum_level += 20; + STS_Lamp_Bar_Set_STS_RGB_Color_FadeOut(color, lum_level, LED_COUNT/2); + HAL_Delay(100); + lum_level += 10; } while (lum_level < 99); STS_Lamp_Bar_Set_Dark(); } - + APP_LOG(TS_OFF, VLEVEL_M, "\r\n [#1] RGB Space Fade In Testing Start\r\n"); for (color=STS_GREEN; color < STS_COLOR_MAX; color++) { lum_level = 10; do { - STS_Lamp_Bar_Set_STS_RGB_Color_FadeIn(color, lum_level, 10); - HAL_Delay(1000); - lum_level += 20; + STS_Lamp_Bar_Set_STS_RGB_Color_FadeIn(color, lum_level, LED_COUNT/2); + HAL_Delay(100); + lum_level += 10; } while (lum_level < 99); STS_Lamp_Bar_Set_Dark(); } - APP_LOG(TS_OFF, VLEVEL_H, "\r\n [#1] RGB Space Fade Out Fade In Testing Finished\r\n"); + APP_LOG(TS_OFF, VLEVEL_M, "\r\n [#1] RGB Space Fade Out Fade In Testing Finished\r\n"); } @@ -393,7 +393,7 @@ void STS_Lamp_Bar_Self_Test(void) uint8_t color=0, lum_level=DEFAULT_LUMINANCE_LEVEL; APP_LOG(TS_OFF, VLEVEL_H, "\r\n YunHorn STS Indicative Lamp Self Test\r\n"); - +/* STS_Lamp_Bar_Self_Test_Simple(); APP_LOG(TS_OFF, VLEVEL_H, "\r\n [#2] Scoller Testing\r\n"); @@ -402,7 +402,8 @@ void STS_Lamp_Bar_Self_Test(void) { STS_Lamp_Bar_Scoller(color, lum_level); } - +*/ + STS_Lamp_Bar_Self_Test_Fade(); APP_LOG(TS_OFF, VLEVEL_H, "\r\n [##] YunHorn STS Indicative Lamp Self Test Finished\r\n"); if ((sts_work_mode == STS_WIRED_MODE) ) diff --git a/LoRaWAN/App/app_lorawan.c b/LoRaWAN/App/app_lorawan.c index 4325c31..9b9f0f8 100644 --- a/LoRaWAN/App/app_lorawan.c +++ b/LoRaWAN/App/app_lorawan.c @@ -71,9 +71,9 @@ void MX_LoRaWAN_Init(void) /* USER CODE BEGIN MX_LoRaWAN_Init_2 */ //STS_Lamp_Bar_Self_Test_Simple(); STS_Lamp_Bar_Self_Test(); - STS_Lamp_Bar_Self_Test_Fade(); + //STS_Lamp_Bar_Self_Test_Fade(); /* USER CODE END MX_LoRaWAN_Init_2 */ - //LoRaWAN_Init(); + LoRaWAN_Init(); /* USER CODE BEGIN MX_LoRaWAN_Init_3 */ /* USER CODE END MX_LoRaWAN_Init_3 */ diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index 53878b5..d65bf64 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -130,7 +130,9 @@ volatile sts_cfg_nvm_t sts_cfg_nvm = { 0x8C, //P[19] RSS SLIDING WINDOW CFG: 0x08 AS threshold, 0x0C as window size }, // above 20 bytes #ifdef ATAL - 0x27, // 0x20 occupy(red:2) | color vacant (dark:0) for ATAL-HK 20241230 + 0x20, // 0x20 occupy(red:2) | color vacant (dark:0) for ATAL-HK 20241230 +#elif defined(FADEOUT) + 0x27, // 0x20 occupy(red:2) | color vacant (white:7) for SWIRE INDIGO1 BEIJING #else 0x21, // color occupy (red:2) | color vacant (green:1) or other 0x20 occupy(red:2) | color vacant (dark:0) for ATAL-HK 20241230 #endif @@ -1275,9 +1277,10 @@ static void OnYunhornSTSLampBarColorTimerEvent(void *context) { #if defined(FADEOUT) - if (sts_rss_result == STS_RESULT_MOTION) { + if ((sts_rss_result == STS_RESULT_MOTION)||(sts_reed_hall_result == STS_Status_Door_Close )) { + STS_Lamp_Bar_Set_STS_RGB_Color_FadeOut(sts_lamp_bar_color, luminance_level, LED_COUNT/2); - } else if (sts_rss_result == STS_RESULT_NO_MOTION){ + } else if ((sts_rss_result == STS_RESULT_NO_MOTION)||(sts_reed_hall_result == STS_Status_Door_Open )){ STS_Lamp_Bar_Set_STS_RGB_Color_FadeIn(sts_lamp_bar_color, luminance_level, LED_COUNT/2); } #else diff --git a/STM32CubeIDE/Release/STS_O7.bin b/STM32CubeIDE/Release/STS_O7.bin index 19c98c1..7172559 100644 Binary files a/STM32CubeIDE/Release/STS_O7.bin and b/STM32CubeIDE/Release/STS_O7.bin differ