Openmv训练
1.循迹小车循迹小车,我这里使用openmv来实现图像识别功能,接下来我会通过对pid.py,car.py,main.py的文件进行一一阐释并如何使用,做出解释。
1.car.py定义openmv的引脚来来控制stm32,这里的openmv作为上位机,而stm32作为下位机接收信息传输来做出实际操作。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859from pyb import Pin,Timerinverse_left = Falseinverse_right = False#推挽输出ain1 = Pin('P0',Pin.OUT_PP)ain2 = Pin('P1',Pin.OUT_PP)bin1 = Pin('P2',Pin.OUT_PP)bin2 = Pin('P3',Pin.OUT_PP)ain1.low()ain2.low()b ...
电赛训练代码hal库
缘由因为我在网上发现很多的相关代码的偶联性太大了,所以就有了分享一些独立模块的操作代码的想法。事不宜迟,我们开始吧。
1.UART 串口通信对于串口通信,我们通常用来调试代码是否正确,就用串口来调解的。于是,我想分享一个可以快速调节的代码,来帮助各位更好地调试自己的代码,我是用的是uart1,芯片是stm32f103c8t6的,对应的引脚是PB9,PB10。
1.UART 头文件我是将这些自定义的模块分开包装实现独立模块化,于是我建立一个单独的文件夹(Hardware)来放自己建立的独立模块。
然后我定义的这个模块名字叫”Debug”—-可以按照自己喜欢的方式定义,没有影响。12345678910#ifndef __DEBUG_H__#define __DEBUG_H__#include "main.h" /*这个是为了引入cubemx在main.h帮我们定义的一些文件,于是我们就不用重复定义了*/#define DEBUG_EN 1 //这个是为了解开在Debug.c的文件中DEBUG_EN 这个和我命名的文件无关哈void My_Printf(char *p ...
STM32一些模块的源码
Descirbation:这里面用来存放STM32的一些模块的源码
嘀嗒定时器延时 SysDelay.h12345678#ifndef __SysDelay_H__#define __SysDelay_H__void Sysdelay_init(void);void Sysdelay_us(u32 nus);void Sysdelay_ms(u32 nms);#endif
嘀嗒定时器延时 SysDelay.c12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485#include "stm32f10x.h" // Device header/**static修饰全局变量,该变量只在本文件被访问,不能被外部文件访问*/static u32 fac_us; //定义 1 微 ...
期末报告系列
2024-6-21 留言持续更新ing对于计算机学科或者是其他需要学习一些计算机语言的同学,已经苦期末的程序设计久矣,故我将我写过的程序作业放在Bolg里面,提供给大家借鉴。(所有的程序都是可以运行的),对于那些需要分模块的部分,我会提示的,没有提示的部分,便是直接放入即可。 最后,感谢各位的观看。
C++写学生管理系统作业所需要求一、设计基础设计一个基于 C++的学生信息管理系统,该系统应能够有效地管理学生信息,包括学生基本信息、课程成绩、奖惩记录等,并提供相关的查询、修改和统计功能。该系统旨在提高学校的管理效率,并为教师和学生提供更好的服务。二、功能要求
学生信息录入o 管理员可以录入学生的基本信息,包括学号、姓名、性别、出生日期、班级等。o 系统应自动为每个学生分配一个唯一的学号。
课程成绩管理o 管理员可以录入学生的课程成绩,包括课程名称、课程代码、成绩等。o 支持学生成绩的修改和查询。
奖惩记录管理o 管理员可以记录学生的奖惩信息,包括奖惩类型、奖惩内容、时间等。o 支持奖惩记录的查询和修改。
学生信息查询o 用户可以通过学号、姓名等关键词查询学生的基本信息、课程成绩和奖惩 ...
PID算法
简介2024-6-18-更新 我们要实现PID算法,需要反馈值。那么,这个值,我们该怎么获取呢? 这里我拿平衡小车举个例子。我们的平衡小车;既然想要做到平衡且不倒的话,就需要把它的三轴角速度和三轴加速度的值放到PID算法中,然后得出值再运用到PWM,最后通过PWM来控制电机调动。(MPU6050可以胜任)所以我们的思路如下:
I2C来获取MPU6050的六轴数据Data
把获取的Data 传输到 PID算法中获取反馈值 Tes
再把Tes用与PWM中
PWM调控电机模块(我称为Motor)那么事不宜迟,开始吧!!!MPU6050模块何为MPU6050?1.MPU6050是一个6轴姿态传感器(3轴加速度计和3轴陀螺仪传感器),可以测量芯片自身X、Y、Z轴的加速度、角度参数(角速度),通过数据融合,可以得到姿态角(由上图所示)。并且我们可以看到横向的是x轴,而纵向的为y轴,垂直与芯片的为z轴,这里我们可以类比中学时期的立体几何坐标图
2. 以立创给的图为例,飞机机身对应三个轴的夹角,机头下倾或者上仰,这个轴的夹角叫俯仰(pitch)。飞机机身左翻滚或者右翻滚,这个轴的夹角叫做 ...
电路小知识
第一章:Tips:在高中时期,我们都会把公式简单地写成乘/除法,但是在这个<<电路>>这门课中,我们要学会将除法换为求导—-微分,把乘法换为求积—-无上限积分重点学习:1.电压,电流的参考方向2.电阻元件和电源元件的特性3.基尔霍夫定律(KCL,KVL)电路是关于能量的传输,分配与转换以及信息传递,控制与处理
1.1.基本认识1.1.1.电路1.反应实际电路部件的主要电磁性质的理想电路的元件及其组合2.理想电路元件:有某种确定的电磁性能的理想元件(Tips:在大学,我们一般称入为—-激励,而出为—-响应,它们对应着高中所学电路的出入。)
1.1.2.五种理想电路元件(基本元件)1.(符号:R) 电阻元件: 表示消耗电能的元件2.(符号:L) 电感元件: 表示产生磁场的元件,储存磁场能量的元件3.(符号:C) 电容元件: 表示产出电场的元件,储存电场能量的元件4.(符号:I,U) 电压源和电流源: 表示将其他形式的能量转变为电能的元件 (还可以用F()函数式来表示)Tips:1.只有两个端子2.可以用电压或电流按数字方式来描述3.不能被分解成其他元件
1.2 电流 ...
个人健身系统(后续会更新交互式)
总览—-主函数执行(pyhton版)1.Main()函数的工作原理因此,我们接下来开始分解模块来进行编程,以后会进行更新改进,不会再使用print式进行交互12345678910111213141516171819202122def main(): """实现主要的业务逻辑""" while True: print_menu() choose = input("请输入你需要的功能:") if choose == '1': add_User() elif choose == '2': append_YourMov(Users[-1]["level"]) elif choose == '3': Detele_Mov() elif choose == '4' ...
蓝牙小车开发时的一些细节
小车基本运动之最重要的—-PWM1.PWM(Pulse Width Modulation)脉冲宽度调制是什么?为何这个PWM(脉冲宽度)如此重要呢?因为在具有惯性的系统中,我们可以通过对一系列脉冲的宽度进行调制,来等效地获得我们所需要的模拟量,经常用于电机控速等领域(属于是常客了)举一个例子:比如说我的占空比为50%,那么在这个一个PWM的周期内,电机处于高电平的时间是只有周期的一半,低电平默认为0,那么我们计算等效电压—-( T(on) 5v + T(off) 0v ) / Ts = 等效电压V 所以50%占空比可以等效为2.5v电压通过这个等效电压的例子,也为我们如何控制电机的速度以及呼吸灯等等一系列工业生产提供了新的思路—-通过PWM(即控制占空比)来控制等效电压—-从而GPIO配置为复用推挽输出,定时器的四个通道(STM32外设)来控制引脚输出
2.如何实现PWM?实现PWM,我们需要用到定时器和OC(输出比较),通过定时器不断计数然后和RCC(参考比较值)不断比较,当计数小于RCC时,输出的电平为高电平,而当计数大于RCC时,输出的电平为低电平—-这个过程叫输出比较— ...
STM32的一些必备知识与自我认知
STM32的主要外设
1.NVIC—-嵌套向量中断控制器
2.SysTick—-系统滴答定时器: 它们是内核里的外设3.RCC—-复位和时钟控制 这个外设十分重要,因为其他的外设再上电的情况下默认是没有时钟的,那么不给时钟的情况下,操作其他外设是无效的,外设不会工作,因此我们需要RCC来配置相应外设的时钟—-使能其时钟
4.GPIO—-通用IO口(用于输入和输出),5.AFIO—-复用IO口(因为每个端口除了GPIO口所定义的功能以外,还有别的功能也可以在该端口实现,就是通过AFIO进行配置,复用的意思就是再次使用-个人理解),其次还有中断端口配置6.EXTI—-外部中断,当引脚有电平变化时,触发中断
7.TIM—-定时器(十分重要,因为是经常使用,功能最大的外设)—-用处:生成PWM波形,测频率,配置成专用编码器接口8.ADC—-模数转化器(Analog Digital Conversioner)—-举个例子:汽车发动机的冷冻装置,热电偶的原理
9.DMA—-直接内存访问(类似于STM32F103C8的小秘书,帮助STM32F103C8完成大量数据的搬运,减轻 ...