////云端下发喂食开关属性,下发成功后,再上传至云端 Clear_Buffer(); while(1) { if(RxBuffer[0] != 0) { HAL_Delay(1000); strx=strstr((const char*)RxBuffer,(const char*)"manual_feed"); if (strx==NULL) printf("手动喂食获取失败"); else { len = strlen(strx); number = strx[13]; printf("手动喂食获取成功"); HAL_Delay(500); printf("收到信息:manual_feed=%c" ,number); HAL_Delay(500); if (number-48 == 1) { HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); while (1) { __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,1000); HAL_Delay(1000); } } if (number-48 == 0) { __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,1500); HAL_Delay(1000); } Clear_Buffer(); } Clear_Buffer(); } HAL_Delay(500); } 改善一下代码,让程序number-48=1时,舵机转动,number-48=0时,舵机停止转动
时间: 2024-04-10 21:28:22 浏览: 72
你可以尝试使用以下改进的代码来实现舵机的转动和停止转动:
```c
//// 云端下发喂食开关属性,下发成功后,再上传至云端
Clear_Buffer();
while (1)
{
if (RxBuffer[0] != 0)
{
HAL_Delay(1000);
strx = strstr((const char*)RxBuffer, (const char*)"manual_feed");
if (strx == NULL)
{
printf("手动喂食获取失败");
}
else
{
len = strlen(strx);
number = strx[13];
printf("手动喂食获取成功");
HAL_Delay(500);
printf("收到信息:manual_feed=%c", number);
HAL_Delay(500);
if (number - '0' == 1)
{
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
while (1)
{
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 1000);
HAL_Delay(1000);
}
}
else if (number - '0' == 0)
{
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 1500);
HAL_Delay(1000);
}
Clear_Buffer();
}
Clear_Buffer();
}
HAL_Delay(500);
}
```
这里主要的修改是将 `number-48` 替换为 `number-'0'`,这样可以更直观地将字符转换为对应的数字。另外,增加了 `else if` 条件语句,在 `number-'0'` 为 0 的情况下停止舵机的转动。同时,添加了对 `Clear_Buffer()` 的调用来清空缓冲区。
阅读全文