增加双色交叠渐变模式
This commit is contained in:
@@ -84,26 +84,29 @@ void set_mode(){
|
||||
W_PWM=1U; C_PWM=1U; driveMode=0U; direction=0U; Mode=mode1;
|
||||
break;
|
||||
case 6:
|
||||
W_PWM=100U; C_PWM=0U; driveMode=1U; direction=1U; Mode=mode1;
|
||||
W_PWM=1U; C_PWM=0U; driveMode=1U; direction=0U; Mode=mode1;
|
||||
break;
|
||||
case 7:
|
||||
W_PWM=100U; C_PWM=0U; driveMode=1U; direction=1U; Mode=mode3;
|
||||
break;
|
||||
case 8:
|
||||
W_PWM=100U; C_PWM=0U; driveMode=1U; direction=1U; Mode=mode2;
|
||||
W_PWM=100U; C_PWM=0U; driveMode=1U; direction=0U; Mode=mode3;
|
||||
break;
|
||||
case 9:
|
||||
W_PWM=0U; C_PWM=100U; driveMode=2U; direction=1U; Mode=mode2;
|
||||
W_PWM=100U; C_PWM=0U; driveMode=1U; direction=1U; Mode=mode2;
|
||||
break;
|
||||
case 10:
|
||||
W_PWM=50U; C_PWM=50U; driveMode=0U; direction=1U; Mode=mode2;
|
||||
W_PWM=0U; C_PWM=100U; driveMode=2U; direction=1U; Mode=mode2;
|
||||
break;
|
||||
case 11:
|
||||
W_PWM=100U; C_PWM=0U; driveMode=1U; direction=2U; Mode=mode2;
|
||||
W_PWM=50U; C_PWM=50U; driveMode=0U; direction=1U; Mode=mode2;
|
||||
break;
|
||||
case 12:
|
||||
W_PWM=100U; C_PWM=0U; driveMode=1U; direction=2U; Mode=mode2;
|
||||
break;
|
||||
case 13:
|
||||
W_PWM=100U; C_PWM=0U; driveMode=1U; direction=2U; Mode=mode2;
|
||||
break;
|
||||
case CUSTOM_TEMPERATURE_MODE:
|
||||
Mode=mode0;
|
||||
break;
|
||||
@@ -151,6 +154,7 @@ void Mode0(){ //
|
||||
#define THREE_COLOR_WAIT_NEUTRAL 6U
|
||||
#define THREE_COLOR_WAIT_COLD 7U
|
||||
#define THREE_COLOR_WAIT_WARM 8U
|
||||
#define OVERLAP_GRADIENT_LEVEL 40U
|
||||
|
||||
static uint8_t breathespeed_flag=0; //该变量只是用来处理三种颜色呼吸时候,对中性光的速度变大
|
||||
static void breathe_fun(uint16_t *PWM_1, uint16_t *PWM_2, uint8_t flag) {
|
||||
@@ -294,13 +298,13 @@ void jump_fun(uint16_t *PWM_1, uint16_t *PWM_2, uint8_t flag){
|
||||
|
||||
void Mode2(void)
|
||||
{
|
||||
if(choose_mode_falsg==8U){
|
||||
if(choose_mode_falsg==9U){
|
||||
jump_fun(&C_PWM,&W_PWM,0U);
|
||||
}else if(choose_mode_falsg==9U){
|
||||
jump_fun(&W_PWM,&C_PWM,0U);
|
||||
}else if(choose_mode_falsg==10U){
|
||||
jump_fun(&W_PWM,&C_PWM,1U);
|
||||
jump_fun(&W_PWM,&C_PWM,0U);
|
||||
}else if(choose_mode_falsg==11U){
|
||||
jump_fun(&W_PWM,&C_PWM,1U);
|
||||
}else if(choose_mode_falsg==12U){
|
||||
switch(direction){
|
||||
case 1U:
|
||||
W_PWM=100U; C_PWM=0U; driveMode=1U; direction=2U;
|
||||
@@ -312,7 +316,7 @@ void Mode2(void)
|
||||
W_PWM=50U; C_PWM=50U; driveMode=0U; direction=1U;
|
||||
break;
|
||||
}
|
||||
}else if(choose_mode_falsg==12U){
|
||||
}else if(choose_mode_falsg==13U){
|
||||
switch(direction){
|
||||
case 1U:
|
||||
W_PWM=100U; C_PWM=0U; driveMode=1U; direction=2U;
|
||||
@@ -338,15 +342,52 @@ void Mode2(void)
|
||||
|
||||
void Mode3(void)
|
||||
{
|
||||
if(choose_mode_falsg!=7U) return;
|
||||
if(direction==1U){
|
||||
if(C_PWM<100U) C_PWM++;
|
||||
W_PWM=100U-C_PWM;
|
||||
if(C_PWM>=100U){ C_PWM=100U; W_PWM=0U; direction=0U; }
|
||||
if(choose_mode_falsg==7U){
|
||||
if(direction==1U){
|
||||
if(C_PWM<100U) C_PWM++;
|
||||
W_PWM=100U-C_PWM;
|
||||
if(C_PWM>=100U){ C_PWM=100U; W_PWM=0U; direction=0U; }
|
||||
}else{
|
||||
if(C_PWM>0U) C_PWM--;
|
||||
W_PWM=100U-C_PWM;
|
||||
if(C_PWM==0U){ W_PWM=100U; direction=1U; }
|
||||
}
|
||||
}else if(choose_mode_falsg==8U){
|
||||
switch(direction){
|
||||
case 0U:
|
||||
C_PWM=0U; driveMode=1U;
|
||||
if(W_PWM>OVERLAP_GRADIENT_LEVEL) W_PWM--;
|
||||
if(W_PWM<=OVERLAP_GRADIENT_LEVEL){ W_PWM=OVERLAP_GRADIENT_LEVEL; direction=1U; }
|
||||
break;
|
||||
case 1U:
|
||||
if(W_PWM>0U){ W_PWM--; C_PWM++; }
|
||||
driveMode=0U;
|
||||
if(W_PWM==0U){ C_PWM=OVERLAP_GRADIENT_LEVEL; driveMode=2U; direction=2U; }
|
||||
break;
|
||||
case 2U:
|
||||
W_PWM=0U; driveMode=2U;
|
||||
if(C_PWM<100U) C_PWM++;
|
||||
if(C_PWM>=100U){ C_PWM=100U; direction=3U; }
|
||||
break;
|
||||
case 3U:
|
||||
W_PWM=0U; driveMode=2U;
|
||||
if(C_PWM>OVERLAP_GRADIENT_LEVEL) C_PWM--;
|
||||
if(C_PWM<=OVERLAP_GRADIENT_LEVEL){ C_PWM=OVERLAP_GRADIENT_LEVEL; direction=4U; }
|
||||
break;
|
||||
case 4U:
|
||||
if(C_PWM>0U){ C_PWM--; W_PWM++; }
|
||||
driveMode=0U;
|
||||
if(C_PWM==0U){ W_PWM=OVERLAP_GRADIENT_LEVEL; driveMode=1U; direction=5U; }
|
||||
break;
|
||||
case 5U:
|
||||
default:
|
||||
C_PWM=0U; driveMode=1U;
|
||||
if(W_PWM<100U) W_PWM++;
|
||||
if(W_PWM>=100U){ W_PWM=100U; direction=0U; }
|
||||
break;
|
||||
}
|
||||
}else{
|
||||
if(C_PWM>0U) C_PWM--;
|
||||
W_PWM=100U-C_PWM;
|
||||
if(C_PWM==0U){ W_PWM=100U; direction=1U; }
|
||||
return;
|
||||
}
|
||||
if(C_PWM==0U) driveMode=1U;
|
||||
else if(W_PWM==0U) driveMode=2U;
|
||||
|
||||
Reference in New Issue
Block a user