乒乓球定高悬浮
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上显示实时高度信息,高度设定值和预设值。
实物


浙公网安备 33010602011771号