85 lines
2.8 KiB
C
85 lines
2.8 KiB
C
|
/*****************************************************************
|
|||
|
;Project: Light
|
|||
|
;MCU:
|
|||
|
;Date:
|
|||
|
;File:
|
|||
|
;Function:
|
|||
|
******************************************************************/
|
|||
|
#include "chargeLed_task.h"
|
|||
|
#include "config.h"
|
|||
|
#include "tick.h"
|
|||
|
#include "ws2812.h"
|
|||
|
#include "adc.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;
|
|||
|
/*---------------------------------------------------------------*/
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾLED<45><44><EFBFBD><EFBFBD>
|
|||
|
void chargeLed_Task(void)
|
|||
|
{
|
|||
|
static unsigned char charge_state=0;
|
|||
|
static unsigned short timer_charge = 0; //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ڵ㣨<DAB5>൱<EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ӣ<EFBFBD>
|
|||
|
static unsigned short delay_charge = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ms
|
|||
|
static unsigned int chargeColor = 0x000000;
|
|||
|
static unsigned char remainBatteryLed=0; //<2F><>adc<64><63><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
static unsigned char rotate_chargeLed=0; //<2F><>ǰ<EFBFBD><C7B0>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>led
|
|||
|
|
|||
|
if(tTaskFlag.tFlag.chargeFlag == 1)
|
|||
|
{
|
|||
|
if(Get_TaskInitFlag() == 1)
|
|||
|
{
|
|||
|
WS_CloseAll();
|
|||
|
Set_TaskInitFlag(0);//--<2D><>ʼ<EFBFBD><CABC>һ<EFBFBD>ξ<EFBFBD>OK
|
|||
|
delay_charge = 600-(AD_Value.PowerScale*4);
|
|||
|
charge_state = 0;
|
|||
|
timer_charge = 0;
|
|||
|
remainBatteryLed = AD_Value.PowerScale/10;
|
|||
|
rotate_chargeLed = remainBatteryLed;
|
|||
|
chargeColor = CHARGE_SAFECOLOR;
|
|||
|
}
|
|||
|
|
|||
|
switch(charge_state)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
if(TimerCheck(timer_charge,delay_charge))
|
|||
|
{
|
|||
|
LedBuff_CleanAll();
|
|||
|
LedBuff_WriteNum(remainBatteryLed,chargeColor); //<2F><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ledBuffд<66><D0B4>color
|
|||
|
LedBuff_WriteOrder(rotate_chargeLed ,chargeColor); //ָ<><D6B8>ledBuffд<66><D0B4>color
|
|||
|
WS_Show(); //<2F><><EFBFBD><EFBFBD>
|
|||
|
rotate_chargeLed++; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD>ĵ<EFBFBD>
|
|||
|
if(rotate_chargeLed >= 10) //תһȦ<D2BB><C8A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|||
|
{
|
|||
|
chargeColor = CHARGE_SAFECOLOR; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ɫ
|
|||
|
//--<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,100->10
|
|||
|
//remainBatteryLed = powerScale/10;
|
|||
|
//<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)
|
|||
|
remainBatteryLed = 10;
|
|||
|
else
|
|||
|
remainBatteryLed = AD_Value.PowerScale/10;
|
|||
|
|
|||
|
if(remainBatteryLed==0) //ÿתһȦ<D2BB><C8A6><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ʼ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
rotate_chargeLed = 0;
|
|||
|
else
|
|||
|
rotate_chargeLed = remainBatteryLed-1; //<2F><>ת<EFBFBD><D7AA>ʼ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
delay_charge = 600-(AD_Value.PowerScale*4);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ,<2C><><EFBFBD><EFBFBD>ѹ<EFBFBD>仯<EFBFBD><E4BBAF><EFBFBD>仯
|
|||
|
}
|
|||
|
charge_state= 1;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 1:
|
|||
|
TimerSet(timer_charge,delay_charge); //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
charge_state= 0;
|
|||
|
break;
|
|||
|
|
|||
|
default: charge_state = 0;break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|