PASII/CandeII_1.4/Taskrun/shockLed_task.c

124 lines
2.8 KiB
C
Raw Normal View History

/*****************************************************************
;Project: Light
;MCU:
;Date:
;File:
;Function:
******************************************************************/
#include "shockLed_task.h"
#include "ws2812.h"
#include "tick.h"
#include "adc.h"
#include "config.h"
#include "detect_task.h"
/*---------------------------------------------------------------*/
//<2F>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern AD_Value_t AD_Value;
extern TaskFlagUnion_t tTaskFlag;
extern unsigned char VoltageStableFlag; //<2F><><EFBFBD>ص<EFBFBD>ѹ<EFBFBD>ȶ<EFBFBD><C8B6><EFBFBD>־
/*---------------------------------------------------------------*/
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void shockLed_Task(void)
{
static unsigned char shock_state=0;
static unsigned short time=0;
static unsigned char powerLedNum = 0;
unsigned int powerColor=0;
if((tTaskFlag.tFlag.shockFlag == 1)&&(VoltageStableFlag == 1))
{
if(Get_TaskInitFlag() == 1)
{
shock_state = 0;
WS_CloseAll();
Set_TaskInitFlag(0);
}
switch(shock_state)
{
case 0:
if(AD_Value.PowerScale <= 30) //<2F><><EFBFBD><EFBFBD>С<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>30%<25><>ʾ<EFBFBD><CABE><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>̵<EFBFBD>
powerColor=POWER_WARNCOLOR;
else
powerColor=POWER_SAFECOLOR;
//--<2D>õ<EFBFBD><C3B5><EFBFBD>10<31><30><EFBFBD>Ƶȱ<C6B5><C8B1><EFBFBD>ʾ<EFBFBD><CABE>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
//<2F><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>0~9->0,10~19->1,90~99->9,97~100->10
if(AD_Value.PowerScale >= 100)
powerLedNum = 10;
else
powerLedNum = AD_Value.PowerScale/10;
if(AD_Value.PowerScale <= 10)
{
powerLedNum = 1;
}
//--ledBuff<66><66><EFBFBD><EFBFBD>
LedBuff_CleanAll();
//--ָ<><D6B8>ledBuffд<66><D0B4>color<6F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LedBuff_WriteNum(powerLedNum,powerColor);
WS_Show();
//--<2D><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TimerSet(time,5000); //<2F><>5s
shock_state = 1;
break;
case 1: //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>û<EFBFBD><C3BB>
//--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ƿ񵽴<C7B7>
if(TimerCheck(time,5000))
{
//--ָ<><D6B8>led<65><64><EFBFBD><EFBFBD>
WS_CloseAll();
shock_state = 0;
tTaskFlag.tFlag.shockFlag = 0;
}
break;
default:
shock_state = 0;
break;
}
}
}
/*---------------------------------------------------------------*/
//LED<45><44>˸<EFBFBD><CBB8><EFBFBD><EFBFBD>
unsigned char flash_state=0;
void FlashLed_Task(void)
{
static unsigned short time=0;
switch(flash_state)
{
case 0:
LedBuff_WriteNum(10,0xff0000);
WS_Show();
TimerSet(time,200);
flash_state = 1;
break;
case 1:
if(TimerCheck(time,200))
{
WS_CloseAll();
TimerSet(time,200);
flash_state = 2;
}
break;
case 2:
if(TimerCheck(time,200))
{
flash_state = 0;
}
break;
default: flash_state = 0;
break;
}
}