本帖最后由 aqa 于 2019-6-21 11:15 编辑
基于STM32F407VGT6的红外测距
用到的模块:红外测距(DHT11),RGB彩灯
描述:通过红外测距采集信息,RGB彩灯的颜色及亮度说明了距离的大小,具体数字可以在串口助手显示打印出来
<font style="background-color: rgb(255, 255, 255);">/*
函数功能:超声波测距,用RGB灯的颜色来表示距离的大小
函数参数:无
函数返回值:无
设计者:彭XX
修改者:彭XX
设计时间:2019/6/18
修改时间:2019/6/18
备注:
*/
int main(void)
{
float data;
//把红外侧距都注释即单独的RGB彩灯
//tim5_ch2_pwm(255,0);//R
//tim5_ch3_pwm(255,0);//G
//tim5_ch4_pwm(255,255);//B
usart1_init(115200);
tim13_ch1_pwm(1000,400);
tim14_ch1_capture(1000);
while(1)
{
tim13_ch1_pwm(10000,high);//R
data = (float)high/58;
printf("date=%f cm\r\n",(float)high/58);//在串口助手打印出来
//printf("date=%f mm\r\n",(float)high*340/20);
printf("low=%dus\r\n",low);//低电平时间
printf("high=%dus\r\n",high);//高电平时间
printf("***************************\r\n");
if(data>=2 && data <100)
{
tim5_ch2_pwm(255,data*2 );//R
tim5_ch3_pwm(255,0);//G
tim5_ch4_pwm(255,0);//B
}
else if(data >=100 && data <200)
{
tim5_ch2_pwm(255,0);//R
tim5_ch3_pwm(255,data-100);//G
tim5_ch4_pwm(255,0);//B
}
else if(data >= 200)
{
tim5_ch2_pwm(255,0);//R
tim5_ch3_pwm(255,0);//G
tim5_ch4_pwm(255,data-200);//B
}
tim6_delay_ms(10);
}
}</font>
以上是部分程序,由于篇幅过长,有需要的电友可以点击链接下载所有工程资料,工程基于keil5
|