--- fix lamp bar color issue

This commit is contained in:
Yunhorn 2024-08-06 19:52:39 +08:00
parent d6d0b04ab0
commit 676b281450
5 changed files with 58 additions and 24 deletions

View File

@ -141,9 +141,9 @@ void Error_Handler(void);
/* /*
* STM32WL55, STM32WLE5 Clock=48Mhz 48,000,000/800khz = 60 * STM32WL55, STM32WLE5 Clock=48Mhz 48,000,000/800khz = 60
*/ */
#define STS_LAMP_BAR_PWM_TIM_PERIOD (60 - 1) #define STS_LAMP_BAR_PWM_TIM_PERIOD (240 - 1)
#define STS_LAMP_BAR_HTIM htim1 #define STS_LAMP_BAR_HTIM htim1
#define STS_LAMP_BAR_LED_NUM (30) //30 for 46CM length LED strip #define STS_LAMP_BAR_LED_NUM (60) //60 for 46CM length LED strip
#define WSDATA_PORT_PIN_PA8 #define WSDATA_PORT_PIN_PA8
//#define WSDATA_PORT_PIN_PA9 //#define WSDATA_PORT_PIN_PA9

View File

@ -52,8 +52,17 @@ enum sts_lamp_color {
STS_GREEN_DARK=0x10, //0b0001 0000 GREEN DARK STS_GREEN_DARK=0x10, //0b0001 0000 GREEN DARK
STS_RED_DARK=0x20, //0b0010 0000, STS_RED_DARK=0x20, //0b0010 0000,
STS_RED_GREEN=0x21,
STS_RED_BLUE=0x23, //0b0010 0011 RED BLUE FLASH STS_RED_BLUE=0x23, //0b0010 0011 RED BLUE FLASH
STS_BLUE_DARK=0x30 //0b0011 0000 BLUE DARK STS_BLUE_DARK=0x30, //0b0011 0000 BLUE DARK
STS_BLUE_GREEN=0x31,
STS_GREENDARK=0x41, // GREEN FLASH 'A'
STS_REDDARK=0x42, // RED FLASH 'B'
STS_REDBLUE=0x43, // RED/BLUE FLASH 'C'
STS_BLUEDARK=0x44, // BLUE FLASH 'D'
STS_REDGREEN=0x45, // RED/GREEN FLASH 'E'
STS_BLUEGREEN=0x46 // BLUE/GREEN FLASH 'F'
}; };
enum sts_oo_work_mode { enum sts_oo_work_mode {

View File

@ -32,8 +32,8 @@
#define ZERO_PULSE (20) #define ZERO_PULSE (20)
#define LED_DATA_LEN 24 #define LED_DATA_LEN 24
#define WS2812B_DATA_LEN (LED_DATA_LEN * (STS_LAMP_BAR_LED_NUM+1)) #define WS2812B_DATA_LEN (LED_DATA_LEN * (STS_LAMP_BAR_LED_NUM))
#define RESET_PULSE (16) //(80) TO FIX DARK_COLOR AND SM2 #define RESET_PULSE (24) //(80) TO FIX DARK_COLOR AND SM2
typedef struct ws2812b_e { typedef struct ws2812b_e {
@ -99,7 +99,7 @@ void STS_Lamp_Bar_Set_Dark(void)
void STS_WS2812B_Refresh(void) void STS_WS2812B_Refresh(void)
{ {
HAL_TIM_PWM_Start_DMA(&STS_LAMP_BAR_HTIM, STS_LAMP_BAR_TIM_CHANNEL, (uint32_t *)&rgb_buf, (WS2812B_DATA_LEN+LED_DATA_LEN)); HAL_TIM_PWM_Start_DMA(&STS_LAMP_BAR_HTIM, STS_LAMP_BAR_TIM_CHANNEL, (uint32_t *)&rgb_buf, (WS2812B_DATA_LEN+RESET_PULSE));
//HAL_TIM_PWM_Start_IT(&STS_LAMP_BAR_HTIM, STS_LAMP_BAR_TIM_CHANNEL); //HAL_TIM_PWM_Start_IT(&STS_LAMP_BAR_HTIM, STS_LAMP_BAR_TIM_CHANNEL);
} }
@ -126,8 +126,7 @@ void STS_Lamp_Bar_Scoller(uint8_t color, uint8_t lum_level)
for(uint8_t i = 0; i<STS_LAMP_BAR_LED_NUM; i++) for(uint8_t i = 0; i<STS_LAMP_BAR_LED_NUM; i++)
{ {
HAL_Delay(20); //MAKE THIS LESS THAN 10 NOT TO BLOCK JOIN THE LORAWAN HAL_Delay(6); //MAKE THIS LESS THAN 10 NOT TO BLOCK JOIN THE LORAWAN
//UTIL_MEM_set_8((void*)rgb_buf.GRB,ZERO_PULSE,(WS2812B_DATA_LEN+LED_DATA_LEN));
STS_WS2812B_Set_RGB(color_rgb[color][0]*lum_level,color_rgb[color][1]*lum_level, color_rgb[color][2]*lum_level, i); STS_WS2812B_Set_RGB(color_rgb[color][0]*lum_level,color_rgb[color][1]*lum_level, color_rgb[color][2]*lum_level, i);
STS_WS2812B_Refresh(); STS_WS2812B_Refresh();
} }
@ -149,7 +148,7 @@ void STS_WS2812B_Set_RGB(uint8_t red, uint8_t green, uint8_t blue, uint8_t idx)
void STS_Lamp_Bar_Set_RGB_Color(uint8_t red, uint8_t green, uint8_t blue ) void STS_Lamp_Bar_Set_RGB_Color(uint8_t red, uint8_t green, uint8_t blue )
{ {
uint8_t i =0; uint8_t i =0;
UTIL_MEM_set_8((void*)rgb_buf.GRB,0x0,(WS2812B_DATA_LEN+LED_DATA_LEN)); UTIL_MEM_set_8((void*)rgb_buf.GRB,0x00,(WS2812B_DATA_LEN+RESET_PULSE));
for(i = 0; i < STS_LAMP_BAR_LED_NUM; i++) for(i = 0; i < STS_LAMP_BAR_LED_NUM; i++)
{ {
@ -197,6 +196,28 @@ void STS_Lamp_Bar_Set_STS_RGB_Color(uint8_t sts_lamp_color, uint8_t lum)
case STS_WHITE: case STS_WHITE:
STS_Lamp_Bar_Set_RGB_Color(lum, lum, lum); STS_Lamp_Bar_Set_RGB_Color(lum, lum, lum);
break; break;
case STS_COLOR_MAX:
sts_lamp_bar_color = STS_RED_BLUE;
break;
case STS_GREENDARK:
sts_lamp_bar_color = STS_GREEN_DARK;
break;
case STS_REDDARK:
sts_lamp_bar_color = STS_RED_DARK;
break;
case STS_REDBLUE:
sts_lamp_bar_color = STS_RED_BLUE;
break;
case STS_BLUEDARK:
sts_lamp_bar_color = STS_BLUE_DARK;
break;
case STS_REDGREEN:
sts_lamp_bar_color = STS_RED_GREEN;
break;
case STS_BLUEGREEN:
sts_lamp_bar_color = STS_BLUE_GREEN;
break;
} }
} }

View File

@ -556,15 +556,15 @@ int sts_presence_rss_fall_rise_detection(void)
//#ifdef LOG_RSS //#ifdef LOG_RSS
APP_LOG(TS_OFF, VLEVEL_L,"\r\nSensor at Ceiling Height: %u mm\r\n",(uint16_t)sts_sensor_install_height); APP_LOG(TS_OFF, VLEVEL_L,"\r\nSensor at Ceiling Height: %u mm\r\n",(uint16_t)sts_sensor_install_height);
APP_LOG(TS_OFF, VLEVEL_L,"\r\n|Motion Distance Zone| ##### |Height cm|\r\n");
for (uint8_t k=0; k<12; k++) { for (uint8_t k=0; k<12; k++) {
if (motion_in_hs_zone[k][thiscnt]>0) { if (motion_in_hs_zone[k][thiscnt]>0) {
APP_LOG(TS_OFF, VLEVEL_L,"\r\nMotion Distance Zone: %2u %4u Height< %4u cm", k, (uint8_t)motion_in_hs_zone[k][thiscnt], (int)(k+1)*40); APP_LOG(TS_OFF, VLEVEL_L,"\r\n| %2u | %4u | %4u |\r\n", k, (uint8_t)motion_in_hs_zone[k][thiscnt], (int)(k+1)*40);
} }
else else
{ {
APP_LOG(TS_OFF, VLEVEL_L,"\r\nMotion Distance Zone: %2u %4s", k, " "); APP_LOG(TS_OFF, VLEVEL_L,"\r\n| %2u | | |\r\n", k);
} }
} }
//#endif //#endif

View File

@ -1161,7 +1161,7 @@ static void OnYunhornSTSLampBarColorTimerEvent(void *context)
//uint8_t lum=DEFAULT_LUMINANCE_LEVEL; //uint8_t lum=DEFAULT_LUMINANCE_LEVEL;
//HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); /* STS GREEN */ //HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); /* STS GREEN */
//if ((sts_work_mode != STS_WIRED_MODE)) //if ((sts_work_mode != STS_WIRED_MODE))
uint8_t high4=(sts_lamp_bar_color>>4)&0x0f, low4=sts_lamp_bar_color&0x0f; uint8_t high4=(sts_lamp_bar_color>>4)&0x0f, low4=sts_lamp_bar_color&0x07;
if (high4==0) if (high4==0)
{ {
@ -1416,20 +1416,23 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams)
APP_LOG(TS_OFF, VLEVEL_H, "###### U/L FRAME:JOIN | DR:%d | PWR:%d\r\n", joinParams->Datarate, joinParams->TxPower); APP_LOG(TS_OFF, VLEVEL_H, "###### U/L FRAME:JOIN | DR:%d | PWR:%d\r\n", joinParams->Datarate, joinParams->TxPower);
} }
heart_beat_timer = 1; if (STS_LoRa_WAN_Joined)
//SendTxData(); {
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); heart_beat_timer = 1;
//SendTxData();
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer); UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
//UTIL_TIMER_Start(&TxTimer); //UTIL_TIMER_Start(&TxTimer);
//UTIL_TIMER_Start(&STSDurationCheckTimer); //UTIL_TIMER_Start(&STSDurationCheckTimer);
OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity); OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity);
STS_SENSOR_Distance_Test_Process(); STS_SENSOR_Distance_Test_Process();
APP_LOG(TS_OFF, VLEVEL_H, "\r\nRSS Measured Distance=[%u] mm \r\n", (uint16_t)sts_distance_rss_distance); APP_LOG(TS_OFF, VLEVEL_H, "\r\nRSS Measured Distance=[%u] mm \r\n", (uint16_t)sts_distance_rss_distance);
}
/* USER CODE END OnJoinRequest_1 */ /* USER CODE END OnJoinRequest_1 */
} }
@ -2273,7 +2276,8 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size)
APP_LOG(TS_OFF, VLEVEL_L, "\r\n Cloud Color Set to %u \r\n", sts_cloud_netcolor); APP_LOG(TS_OFF, VLEVEL_L, "\r\n Cloud Color Set to %u \r\n", sts_cloud_netcolor);
} }
sts_service_mask = STS_SERVICE_MASK_L0; sts_service_mask = STS_SERVICE_MASK_L0;
sts_lamp_bar_color = sts_cloud_netcolor; if ((sts_cloud_netcolor >= 11)&&(sts_cloud_netcolor<=36)) // 'A'-'Z'
sts_lamp_bar_color = (sts_cloud_netcolor+0x30);
sts_cfg_nvm.work_mode = (uint8_t)sts_work_mode; sts_cfg_nvm.work_mode = (uint8_t)sts_work_mode;
sts_cfg_nvm.sts_service_mask = (uint8_t)sts_service_mask; sts_cfg_nvm.sts_service_mask = (uint8_t)sts_service_mask;
OnStoreSTSCFGContextRequest(); OnStoreSTSCFGContextRequest();