基于STM32F103循迹小车

本人小白一个,利用暑假时间在家做一些小东西。我这次想要跟大家分享的是基于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循迹小车)