乒乓球定高悬浮

date: 2021-07-20 09:33:35

超声波测距

TIM4定时器用于超声波测距的中断hcsr04_NVIC();在中断内和Hcsr04Init();

TIM2PWM输出控制风扇

STM32定时器不能重复使用,故此时应选择除TIM4以外的定时器,配置为PWM风扇控制引脚,这里选择TIM2的通道2(PA1)

Hcsr04GetLength();函数返回float类型超声波距离信息。

//通过定时器4计数器值推算距离
float Hcsr04GetLength(void )
{
   u32 t = 0;
   int i = 0;
   float lengthTemp = 0;
   float sum = 0;
   while(i!=5)
   {
      TRIG_Send = 1;      //TRIG发送高电平
      delay_us(20);		  //发送一个维持20us的高电平方波
      TRIG_Send = 0;	  //TRIG发送重回低电平
      while(ECHO_Reci == 0);      //在接收端为低电平时打开TIM4,在定时器中断内计数
      OpenTimerForHc();        
      i = i + 1;				  //测距次数加一
      while(ECHO_Reci == 1);	  //当接收端接收到发送的高电平方波后,关闭TIM4停止计数
      CloseTimerForHc();        
      t = GetEchoTimer(); //获得脉冲从发送到接收的时间间隔    	 
			lengthTemp = ((float)t*0.034/2);//cm
      sum = lengthTemp + sum ;//五次测量距离加和
        
    }
    lengthTemp = sum/5.0; //求平均值减小误差
    return lengthTemp;
}

定高

按键设定需要的高度值,while循环调节高度在一定范围内满足需求后,退出while循环。

显示

在OLED上显示实时高度信息,高度设定值和预设值。

实物

posted @ 2022-02-01 23:14  Ma-Hao  阅读(83)  评论(0)    收藏  举报