PASII/CandeII_1.4/Taskrun/chargeLed_task.c

85 lines
2.8 KiB
C
Raw Normal View History

/*****************************************************************
;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;
}
}
}