×
单片机 > 单片机程序设计 > 详情

基于STM32F103循迹小车

发布时间:2020-05-26 发布时间:
|

本人小白一个,利用暑假时间在家做一些小东西。我这次想要跟大家分享的是基于STM32F103的循迹小车的制作。(两个轮子)


主要硬件:板子、L298N、电机、4个循迹模块等


话不多说,先上干货。


XJ.c


#include "XJ.h"//循迹文件

#include "stm32f10x.h"

void XJ_Init(void)

{

        GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

    

    

    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//配置为浮空输入,可以读取引脚电平

    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;

    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

    GPIO_Init(GPIOA,&GPIO_InitStructure);

        GPIO_SetBits(GPIOB,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);

    //将所有循迹模块连接的引脚配置为高电平,当检测到黑线时,引脚会返回高电平

}


main.c(只贴出部分关键代码)


while(1){


 


if(KEY0==0)//Èç¹û°´¼ü0±»°´Ï£¬¿ªÆôÑ­¼£Ä£Ê½

         {

             while(1)//

             {

                 XJ1=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_4);//

                 XJ2=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5);

                 XJ3=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6);

                 XJ4=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7);


             if((XJ1==1|XJ2==1)&&(XJ3==0&&XJ4==0))

             {

            

                 turnleft();

            delay_ms(150);

                 

             }

            else if((XJ3==1|XJ4==1)&&(XJ1==0&&XJ4==0))//

             {

                 

                 turnright();

                 delay_ms(150);

                 

             }

             else if((XJ1==1&&XJ2==1)&&(XJ3==1&&XJ4==1))//四个引脚都检测到高电平,停止

             {

            

                 stop();

                              delay_ms(150);


                 

             }

             else if((XJ2==0&&XJ1==0)&&(XJ4==0&&XJ3==0))

             {

                

                 forward();            

        delay_ms(200);


             }

         }

     }


个人总结:


在制作东西之前,一定要去查各种模块的功能简介以及使用方法。(小白我就是因为买了两种不同的模块,导致程序始终不能顺利运行,花费了很多时间去修改,最后被逼着去查了模块使用手册才解决)其次,一定要坚持,思路混乱(特别是对于像小白一样的初学者)不怕,最怕的是不去解决,可以去做一些与电子毫不相关的事情,等一会儿再来重新理思绪。还有,一定要利用MDK的软件仿真功能。最后是善于改写程序,如何让程序更高效的执行,如何将网上的资料改写成自己项目的一部分。

关键字:STM32F103  循迹小车  L298N 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
如何为单片机选择合适的负载电容