动态改变舵机角度
上一个实验中,我们配置了PWM波的高电平时长计数个数为1000,即时长为1ms,对应旋转角度为45°,在本实验中,我们来动态改变 PWM 占空比,使舵机在0°到180之间来回旋转。
编写如下代码:
- int main(void)
- {
- /* USER CODE BEGIN 1 */
- uint16_t pluse = 500;
- /* USER CODE END 1 */
- HAL_Init();
- SystemClock_Config();
- MX_GPIO_Init();
- MX_TIM16_Init();
- /* USER CODE BEGIN 2 */
- /* USER CODE END 2 */
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while (1)
- {
- /* USER CODE END WHILE */
- /* USER CODE BEGIN 3 */
- //产生PWM,舵机转动
- HAL_TIM_PWM_Start(&htim16,TIM_CHANNEL_1);
- //1s后改变舵机角度,增加45°
- HAL_Delay(1000);
- pluse += 500;
- if(pluse == 3000)
- {
- //如果舵机角度大于180°,回零
- pluse = 500;
- }
- //设置PWM占空比
- __HAL_TIM_SetCompare(&htim16, TIM_CHANNEL_1, (uint16_t)pluse);
- }
- /* USER CODE END 3 */
- }
|