自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 从做智能车中理解到的pid算法

速度闭环我们采用增量式pid,表达式为pwm+= Kp(e(k) - e(k-1)) + Ki(e(k)) + Kd(e(k) - 2e(k-1) + e(k-2)),非常明显,这个表达式可以分成Kp(e(k) - e(k-1)) 、Ki(e(k))、Kd(e(k) - 2e(k-1) + e(k-2))比例项,积分项,微分项三项。现在我们分别看看三项的作用,例如我只使用了比例项Kp,pwm+=Kp(e(k) - e(k-1)),其中e(k-1)代表上次误差,初始值肯定是0涩。so,你看出什么了?

2023-07-30 19:45:25 2282 1

原创 基于Stm32f103软件iic利用SH1106驱动0.96寸OLED

我利用Ascii码的方法去对应位置,我们这个字库也是按照ascii码表的顺序取的,例如第一个叹号对应的ascii值就为0x21,利用j=(Char-0x21)*16即可对应到数组首地址,此外因为我们取模一个字符有16个字节,前8个字节为字符上部分,后8个字节为字符下半部分,分开发送时注意page地址的变化、数组首地址的变化。一般英文字符我们采用16*8(行*列)的大小,这就是基本的取模方法,我们取模后的数据会存到一个数组中,我们先想想如何才能输入一个字符,能够对应到这个字符在数组中的位置,先上代码。

2023-01-30 20:59:22 1932

原创 基于Stm32f103利用模拟iic驱动LM75A温度传感器

对照上面启动的时序图,为了确保信号的正确,我们先将SDA,SCL都拉高,延时5us是为了信号的稳定(5us应该可以更短,可以查询数据手册修改,提高通讯效率),然后拉低SDA,到这里其实已经发出了启动信号,但是我为了后续发送数据部分,SCL操作对称且好理解,在启动信号后将SCL拉低,这样在后续发送一字时只需改变SDA电平(数据,在SCL为低店电平时才能改变),再将SCL拉高(发送出去)其次很多关于iic通讯的专业术语我可能表达的并不准确,如有错误,敬请指正,在错误中进步嘛!

2023-01-24 22:02:03 1326

原创 基于Stm32f103硬件iic驱动LM75A温度传感器

Stm32f103的iic1的SDA,SCL与PB6、PB7是复用的,所以要如上初始io口和iic1。对于温度处理的代码,你可能会有这些疑问:一、第一个if语句是再干嘛,那是在对如果D10为1(即负温度情况下的数据去补码)二、为什么a的值是这样加的,这里特别注意,我这里是将小数部分,整数部分分开处理的,这里看以参照上图我自己注明的数据转化过程。简单来说它是一种常用的板级通讯协议,对于详细iic的学习,可以参考iic协议规范,我也不会,暂时只是学会最初步的使用,遇到问题再查看解决吧。

2023-01-19 20:36:44 2522 3

原创 基于Stm32f103针对TM1640驱动数码管

直接说一下我踩的坑,看中间显示数据部分,每一组地址和数据都要加start和end函数,不能直接command1、data1+command2、data2·······而是start、command1、data1、end+start、command2、data2、end·······直接上代码,这里提出我的疑问:为什么不明确标出start、end?差不多就是这样,在使用数码管的过程中,我还想了利用flash存数据,多次调试发现只能存第一个数,最后发现是flash写入函数的问题,下次再说。如有错误,敬请指正!

2023-01-15 19:17:28 3430 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除