|
|
|
@ -137,21 +137,21 @@ void Sensor_Communication_task(void *pvParameters)
|
|
|
|
|
|
|
|
|
|
|
|
while(1)
|
|
|
|
while(1)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Read_Init();
|
|
|
|
|
|
|
|
now_stage=timelong_Compare();//
|
|
|
|
now_stage=timelong_Compare();//
|
|
|
|
printf("%d %d\r\n",chour,cminute);
|
|
|
|
//printf("%d %d\r\n",chour,cminute);
|
|
|
|
Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数
|
|
|
|
Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数
|
|
|
|
printf("current stage: %d\r\n",now_stage);
|
|
|
|
// printf("current stage: %d\r\n",now_stage);
|
|
|
|
RS485_1_Send_Data_1(rs485buf,8);//(RS485_RX_CNT=0已被注释)
|
|
|
|
RS485_1_Send_Data_1(rs485buf,8);//(RS485_RX_CNT=0已被注释)
|
|
|
|
printf("send finish\r\n");
|
|
|
|
//printf("send finish\r\n");
|
|
|
|
delay_xms(1000);
|
|
|
|
delay_xms(1000);
|
|
|
|
RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
RS485_1_Send_Data_3();
|
|
|
|
RS485_1_Send_Data_3();
|
|
|
|
delay_xms(1000);
|
|
|
|
delay_xms(1000);
|
|
|
|
RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
while(!(RS485_RX_BUF[0]==0 && RS485_RX_BUF[1]==0 && RS485_RX_BUF[2]==0 && RS485_RX_BUF[3]==0 && RS485_RX_BUF[4]==0))
|
|
|
|
while(!(RS485_RX_BUF[0]==0 && RS485_RX_BUF[1]==0 && RS485_RX_BUF[2]==0 && RS485_RX_BUF[3]==0 && RS485_RX_BUF[4]==0))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
printf("enter while\r\n");
|
|
|
|
//printf("enter while\r\n");
|
|
|
|
|
|
|
|
|
|
|
|
if(RS485_RX_BUF[0]==0x01 && RS485_RX_BUF[1]==0x03) // 判断是否校验成功
|
|
|
|
if(RS485_RX_BUF[0]==0x01 && RS485_RX_BUF[1]==0x03) // 判断是否校验成功
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -165,7 +165,7 @@ void Sensor_Communication_task(void *pvParameters)
|
|
|
|
C= RS485_RX_BUF[19];
|
|
|
|
C= RS485_RX_BUF[19];
|
|
|
|
C = C<<8|RS485_RX_BUF[20];
|
|
|
|
C = C<<8|RS485_RX_BUF[20];
|
|
|
|
|
|
|
|
|
|
|
|
printf("now_tem=%d.%d℃,now_hum=%d.%d%% ,co2=%d\r\n",T/10,T%10,H/10,H%10,C);
|
|
|
|
//printf("now_tem=%d.%d℃,now_hum=%d.%d%% ,co2=%d\r\n",T/10,T%10,H/10,H%10,C);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*GPIO1->报警铃 GPIO2->压缩机 GPIO3->四通阀 GPIO4—>新风风扇 GPIO5->加湿器 */
|
|
|
|
/*GPIO1->报警铃 GPIO2->压缩机 GPIO3->四通阀 GPIO4—>新风风扇 GPIO5->加湿器 */
|
|
|
|
@ -192,8 +192,8 @@ void Sensor_Communication_task(void *pvParameters)
|
|
|
|
pid.now_tem=T/10.0;
|
|
|
|
pid.now_tem=T/10.0;
|
|
|
|
PID_Calc();
|
|
|
|
PID_Calc();
|
|
|
|
num=(((pid.OUT*400)/pid.pwmcycle)-1);//请问这个pid.OUT与pwm占空比的值是如何换算过来的
|
|
|
|
num=(((pid.OUT*400)/pid.pwmcycle)-1);//请问这个pid.OUT与pwm占空比的值是如何换算过来的
|
|
|
|
TIM_SetCompare4(TIM4,num); //0-200对应0-100%,如果pid.out=50,占空比就是25%,//num=50*400/200=100,100/400=25%
|
|
|
|
TIM_SetCompare4(TIM4,0.845*num); //0-200对应0-100%,如果pid.out=50,占空比就是25%,//num=50*400/200=100,100/400=25%
|
|
|
|
printf("%d ,%d ,%d ,%d ,%f ,%f ,%f ,%f ,%f ,%f ,%f ,%.3f\r\n",T,H,C,num,(pid.set_tem*10),pid.Kp,ki,kd,pid.Pout,pid.Iout,pid.Dout,num/399.0);
|
|
|
|
//printf("%d ,%d ,%d ,%d ,%f ,%f ,%f ,%f ,%f ,%f ,%f ,%.3f\r\n",T,H,C,num,(pid.set_tem*10),pid.Kp,ki,kd,pid.Pout,pid.Iout,pid.Dout,num/399.0);
|
|
|
|
current_T=T;
|
|
|
|
current_T=T;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -232,14 +232,14 @@ void Sensor_Communication_task(void *pvParameters)
|
|
|
|
// GPIO_ResetBits(GPIOD,GPIO_Pin_1);//关闭风扇
|
|
|
|
// GPIO_ResetBits(GPIOD,GPIO_Pin_1);//关闭风扇
|
|
|
|
humidity_flag=0;
|
|
|
|
humidity_flag=0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
printf("!!!");
|
|
|
|
//printf("!!!");
|
|
|
|
RS485_1_Send_Data_2(); //上传参数
|
|
|
|
RS485_1_Send_Data_2(); //上传参数
|
|
|
|
RX_BUF_ZERO(23);
|
|
|
|
RX_BUF_ZERO(23);
|
|
|
|
//printf(" \r\n");
|
|
|
|
//printf(" \r\n");
|
|
|
|
RX_BUF_Transfer(0,23);
|
|
|
|
RX_BUF_Transfer(0,23);
|
|
|
|
printf("\r\n");
|
|
|
|
//printf("\r\n");
|
|
|
|
RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
printf("\r\n");
|
|
|
|
// printf("\r\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
else if(RS485_RX_BUF[0]==0xEE&&RS485_RX_BUF[1]==0xB6&&RS485_RX_BUF[2]==0x03)//单个同步
|
|
|
|
else if(RS485_RX_BUF[0]==0xEE&&RS485_RX_BUF[1]==0xB6&&RS485_RX_BUF[2]==0x03)//单个同步
|
|
|
|
@ -291,24 +291,20 @@ void Sensor_Communication_task(void *pvParameters)
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
printf("%d %d %d\r\n",T,H,C);
|
|
|
|
printf("%d %d %d\r\n",T,H,C);
|
|
|
|
printf("current params: %d:%d,hot or cold flag:%d, humidity flag:%d, alarm: %d\r\n",chour, cminute, hot_clod_flag, humidity_flag, ALARM);
|
|
|
|
//printf("current params: %d:%d,hot or cold flag:%d, humidity flag:%d, alarm: %d\r\n",chour, cminute, hot_clod_flag, humidity_flag, ALARM);
|
|
|
|
printf("led!!!\r\n");
|
|
|
|
//printf("led!!!\r\n");
|
|
|
|
if(red<=1000&&blue<=1000)
|
|
|
|
if(red<=1000&&blue<=1000)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
PWM_SetCompare1((red/100.0*3.5+28));//J9
|
|
|
|
PWM_SetCompare1((red/100.0*3.5+28));//J9
|
|
|
|
PWM_SetCompare2((blue/100.0*3.5+28));//J11
|
|
|
|
PWM_SetCompare2((blue/100.0*3.5+28));//J11
|
|
|
|
//PWM_SetCompare4((white/10));//J10
|
|
|
|
//PWM_SetCompare4((white/10));//J10
|
|
|
|
printf("red=%d\r\n",red);
|
|
|
|
//printf("red=%d\r\n",red);
|
|
|
|
printf("bule=%d\r\n",blue);
|
|
|
|
//printf("bule=%d\r\n",blue);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
RS485_RX_CNT=0;
|
|
|
|
RS485_RX_CNT=0;
|
|
|
|
//printf("end data to serial monitor end");
|
|
|
|
//printf("end data to serial monitor end");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|