最近我在用STM32mini板子将E18-D80NK和舵机一起联动。想跟大家做一个经验分享。
E18-D80NK介绍:
红外避障传感器是一种集发射与接收于一体的光电传感器。检测
距离可以根据要求进行调节。该传感器具有探测距离远、受可见光干
扰小、价格便宜、易于装配、使用方便等特点,可以广泛应用于机器
人避障、流水线计件等众多自动化产品。
接线时:
它上面有三根线棕线是VCC,蓝线是GND,黑线是OUT。
它上面有一个led灯即输出信号指示灯,有遮挡物时led亮,无遮挡物时led灭。
测量距离3-80cm(可调)。
程序介绍:
OUT接PB4,舵机黄色线(PWM)接PB5,根据板子不同自行改变。
我的程序实现当有遮挡物时舵机转动
/*****红外测距函数******/
int get_dis(void)
{
int i; //定义整型变量i
float sum=0; //初始化浮点型变量sum
for(i=0;i<1;i++) //大家可以把for循环函数去掉
{
GPIO_SetBits(GPIOB,GPIO_Pin_4); //触发信号
while(!GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_4)); //接收信号
TIM_Cmd(TIM2,ENABLE); //使能TIM2定时器
while(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_4));
TIM_Cmd(TIM2,DISABLE); //输出脉冲
sum+=(TIM_GetCounter(TIM2)*1.7)/100.0; //计算红外距离
TIM_SetCounter(TIM2,0); //清零计数值
delay_ms(1); //延时函数
}
sum/=1;
return sum;
}
注意大家可以把程序中的for循环函数去掉,因为它只有一次。主要以库函数的调用定时器的配置,它里面的测距公式不清楚的话看看超声波与舵机的。