基于STM32F103循迹小车

2023-11-13

本人小白一个,利用暑假时间在家做一些小东西。我这次想要跟大家分享的是基于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的软件仿真功能。最后是善于改写程序,如何让程序更高效的执行,如何将网上的资料改写成自己项目的一部分。

我曾许下十年,只为最美的遇见。

我是西伯利亚蟑螂,朋友,我们下次再见。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于STM32F103循迹小车 的相关文章

  • 表格嵌套表格css_HTML5和CSS3的登录和注册表格

    表格嵌套表格css View demo 查看演示 Download Source 下载源 In this tutorial we are going to create two HTML5 forms that will switch be
  • 快速理解Faster RCNN

    Faster RCNN 1 网络结构 2 锚框生成 3 RPN结构 4 Roi pooling 5 分类和回归任务 6 损失函数 7 训练流程 1 网络结构 首先输入图像 进行尺度裁剪成固定的M N 如果比例不匹配可以先填充再裁剪 back
  • 云计算入门——IT架构九重天

    文章目录 一 概述 二 各层简述 2 1 基础层 2 2 计算机网络 2 3 存储层 2 4 服务器层 2 5 操作系统层 2 6 数据库层 2 7 中间件 运行库 2 8 应用软件 2 9 数据层 一 概述 一个公司搭建IT应用一般都会涉
  • [ElasticSearch]间隔搜索IntervalsQuery及JavaSDK简单调用

    1 概念 intervals query 允许用户精确控制查询词在文档中出现的先后关系 实现了对terms顺序 terms之间的距离以及它们之间的包含关系的灵活控制 通过intervals query 间隔搜索 我们可以完成各个terms在
  • MYSQL导出数据出现The MySQL server is running with the --secure-file-priv option

    今天尝试使用 into outfile导出数据的时候出现错误 The MySQL server is running with the secure file priv option so it cannot execute this st
  • 服务器r730系统备份软件,r730服务器

    r730服务器 内容精选 换一换 创建外表语法 CREATE FOREIGN TABLE SQL on Hadoop or OBS 中 需指定一个与MRS数据源连接相关联的外部服务器 当您通过GaussDB DWS 管理控制台创建MRS数据
  • 区块链为每一笔交易盖上时间戳

    黄老邪在传授记账方法时 要求居民将发生在桃花岛上的每一笔交易都记录下来 并且要求他们将交易发生的时间也一并记录在账本上 这就相当于区块链为每一笔交易在发生时盖上了时间戳 在区块链中 时间戳的应用是对每一次交易记录的认证 它就像交易合同公证一
  • 判断map集合是否为空和是否为null

  • 稀疏矩阵转置(C语言)

    最近有数据结构实验课了 还得学一学数据结构喽 以后就把学习经过贴上来了 稀疏矩阵 当一个数组中大部分元素为 或者为同一个值的数组时 可以使用稀疏数组来保存该数组 稀疏数组的处理方法 1 记录数组一共有几行几列 有多少个不同的值 假设有sum
  • linux 切换不了csh,BASH & CSH linux  重定向(ZZ)

    bash 应该允许输入来自以下两种方式 在命令行上指定的文件名 例如 command input file 在这个例子中 command 应该读取文件 input file 标准输入 stdin 缺省情况下为终端 也就是用户的键盘 例如 c
  • TX2支持reboot办法

    手头有台TX2 想要远程控制reboot 在nvidia账号下直接敲命令 nvidia tegra ubuntu sudo reboot h sudo password for nvidia nvidia is not in the sud
  • 驱动开发 作业 day7 9/18

    基于GPIO子系统实现led灯点亮 head h ifndef HEAD H define HEAD H 构建LED开关的功能码 不添加ioctl第三个参数 define LED ON IO l 1 define LED OFF IO l
  • 动态规划之二维费用的背包模型

    前置知识 01背包问题 动态规划之01背包模型 如何何何的博客 CSDN博客 完全背包问题 动态规划之完全背包模型 如何何何的博客 CSDN博客 多重背包问题 动态规划之多重背包模型 如何何何的博客 CSDN博客 二维费用背包问题 二维费用
  • selenium页面切换操作

    selenuim页面切换 webdriver只能在一个页面里对元素进行识别和定位 如果有多个页面操作的时候 要先进行页面切换 切换分两种 1 iframe内嵌页面切换 框架集切换 1 获取iframe标签 iframe driver fin
  • Android12窗口模糊(一)在Activity和Dialog中实现高斯模糊效果

    前言 在 Android 12 中 提供了一些用于实现窗口模糊处理效果 例如背景模糊处理和模糊处理后方屏幕 的公共 API 窗口模糊处理或跨窗口模糊处理用于模糊处理给定窗口后方的屏幕 有两种窗口模糊处理方式 可用于实现不同的视觉效果 背景模
  • 华为OD机试备考攻略 以及题库目录分值说明 考点说明

    华为题库说明 2022与2023题库的区别 华为OD机试的题库是季度更新的 Q1 Q2 Q3 Q4 笔者专栏的题库分为2023和2022 2023的题库是包括2022 11 Q4第四季度 之后以及2023年的题库 2022的题库是包括202
  • 第九届蓝桥杯C/C++ 大学B组省赛编程题题目及答案解析

    目录 试题F 递增三元组 试题G 螺旋折线 试题H 日志统计 试题I 全球变暖 试题J 乘积最大 试题F 递增三元组 问题描述 输入格式 输出格式 样例输入 样例输出 27 代码解析 暴力 三重循环计算所有满足ai lt bj lt ck的
  • R语言之方差分析篇

    当包含的因子是解释变量时 通常会从预测转向 级别差异的分析 即称作方差分析 ANOVA 组间因子 因变量 自变量 均衡设计 balanced design 组内因子 单因素组间方差分析 单因素组内方差分析 重复测量方差分析 主效应 交叉效应
  • JVM Mutex Monitor::lock

    void Monitor lock Thread Self ifdef CHECK UNHANDLED OOPS Clear unhandled oops so we get a crash right away Only clear fo
  • Windows 下PBC库的安装和配置

    背景 PBC库是一个基于双线性对的密码学库 这库在公钥密码学中使用非常广泛 这个库在Linux下的安装非常的简单 有些只会纸上谈兵的人需要在WIN下做 呵呵 但是没办法 需求到了 硬着头皮也要写完 对于一些只会谈兵的人 呵呵 现在主要介绍下

随机推荐

  • jar反编译的.java文件如何可以编辑_修改及反编译可运行Jar包实现过程详解

    将可运行Jar包 反编译成项目 修改代码 再次编译 打包 需要工具 jd gui myeclipse 具体步骤 1 使用jd gui打开原始的Jar包 选择File gt Save All Sources 会生成一个zip压缩包 2 解压这
  • 元素垂直居中的几种方式

    第一种 div div div div boxOne width 200px height 200px background pink display flex justify content center align items cent
  • ps -aux

    查看某个程序的进程号并删除 1 ps aux grep 进程 2 kill 9 进程号 删除该进程
  • visual studio使用教程

    linux疑难问题排查实战 分享了作为公司专家 在项目开发过程中内存优化 堆 栈 代码段 数据段 性能优化 死机 栈越界 堆越界 死锁等疑难问题排查的案例 使用的工具 perf asan strace memleak等 工作经验 大家可以点
  • blender界面基础认识

    blender界面基础认识 自定义功能 Edit gt Preference 界面 主题 视图 灯光 编辑 动画 插件 输入 视图切换 键位映射 系统 保存 加载 文件路径 Blender界面分为以下三个部分 上侧的顶栏 中间的工作区 底部
  • Sklearn专题二 随机森林

    专题二 随机森林 概述 1 集成算法 1 集成算法考虑多个评估器的结果 汇总获取更好的分类 回归表现 2 三种集成算法 装袋法bagging 模型独立 提升法boosting 模型相关 stacking 3 随机森林是一种bagging集成
  • .NET平台常用的开发组件

    工欲善其事 必先利其器 其优雅的编程风格 高效率的开发速度 极度简单的可扩展性 足够强大开发类库 较小的学习曲线 让我对这个平台产生了浓厚的兴趣 在工作和学习中也积累了一些开源的组件 虽然跟Java比Net还是要少 但也足够使用了 其中有一
  • 【C#实现文字转语音功能】

    本文实例为大家分享了C 实现文字转语音的具体代码 供大家参考 具体内容如下 客户提出要求 将文字内容转为语音 因为内网环境 没办法采用联网 在线这种方式 灵机一动 能否写一个简单的例子呢 搜索相关资料还真行 话不多说 有图有真相 关键是 c
  • 网传Spring爆出更大漏洞?别再炒作了…

    之前刚刚过去的log4j2漏洞还历历在目 这次来了个更大的 云舒老大在29日发微博称 出了个超级大漏洞 有吃瓜群众就问 这个瓜有 log4j2 那么好吃吗 云舒大佬的回复是 更大 之后 又有安全大佬sunwear给了一些更细节的信息 所以漏
  • java中类可以包含哪些元素,Java类中包含的元素及作用

    Java类是面试中常考的知识点 是组成Java应用的基本成分 小型和大型的应用都是由类组建而成的 作为合格的Java工程师 一定要清晰了解Java类及其包含的元素及作用 今天学码思Java培训老师就Java类中包含的元素及作用做一个大致讲解
  • springSecurity跨域CORS处理

    续言 之前 知识追寻者写过关于springboot 的跨域处理 并且介绍了跨域相关的概念 具体的可以查看这篇知识追寻者springboot教程系列文章 https zszxz com category springboot article
  • iOS“断点”(Break Point)你不知道多强大

    iOS 断点 Break Point 你不知道多强大 转载自http mp weixin qq com s biz MzA4ODk0NjY4NA mid 230272985 idx 1 sn 045c98bfb2d8dd1ecf7a7321
  • ssh配置config文件,实现vscode免密登陆

    在使用ssh连接服务器时 每一次用vscode连接服务器进行开发 都需要输入密码 相当鸡肋 对config的配置能够实现解决这个问题 step1 生成ssh密钥 如果已经有了就不需要了 使用以下命令 一路回车即可 ssh keygen t
  • 触发connect超时事件

    触发connect超时事件 有关于如何触发connect超时事件 之前相当然的认为在服务器程序accpet函数前阻塞一段事件就好了 这个思路是完全错误的 这是我犯了的一个错误 没有严格的验证自己的程序就将其发布了出来 被小组的小伙伴提问时才
  • shell编程基础: menu drvien script template(菜单脚本模板)

    前言 菜单类脚本 其实就是我们经常使用的交互脚本 在我们安装一个app的时候最常见 我们需要使用交互脚本进行一些配置 在工作中 写一个交互性脚本也同样重要 比如我现在需要写一个数据库授权的脚本 上下文是这样的 我们在开发中都是使用docke
  • LCD和LED屏幕的工作原理总结

    1 点阵取模原理之横向取模与纵向取模 1 1 针式打印机 针式打印机16针是纵向排列 每次打印垂直的16bit 然后右移一bit 继续下列打印 字节的MSB表示最上面的点 字节LSB表示最下面的点 由于汉字字模的点阵是横向排列的 而提供给打
  • 实现单层神经网络

    在前面 我们分别使用逻辑回归和 softmax 回归实现了对鸢尾花数据集的分类 逻辑回归能够实现线性二分类的任务 他其实就是最简单的神经网络 感知机 而softmax回归则实现的是多分类任务 它也可以看做是输出层有多个神经元的单层神经网络
  • Flink之IntervalJoin介绍

    InterValJoin算子 间隔流 一条流去join另一条流去过去一段时间内的数据 该算子将keyedStream与keyedStream转化为DataStream 再给定的时间边界内 默认包含边界 相当于一个窗口 按指定的key对俩个K
  • (ESP32学习13)驱动TFTLCD(SPI接口)

    本篇博文教大家ESP32 驱动TFT SPI驱动 本文给大家的库直接适用于2寸 240 320 的SPI TFT 但实际上这种驱动移植适用于所有的SPI驱动的TFT屏幕 底层代码把LCD初始化里面的寄存器参数改一改就适用了 这些寄存器参数在
  • 基于STM32F103循迹小车

    本人小白一个 利用暑假时间在家做一些小东西 我这次想要跟大家分享的是基于STM32F103的循迹小车的制作 两个轮子 主要硬件 板子 L298N 电机 4个循迹模块等 话不多说 先上干货 XJ c include XJ h 循迹文件 inc