你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32利用oled显示屏与按键进行PID参数调节实现人机交互

[复制链接]
STMCU小助手 发布时间:2022-10-16 20:07
stm32利用oled显示屏与按键进行PID参数调节实现人机交互
8 L' l& C8 g' q, _
, U3 Z7 ]0 z$ V5 R/ u; m( ]上一个学期在学校做四轮车利用PID实现直线走,在调试过程中,我之前是每改一个参数就下载程序进控制板进行调试,观察车是否偏移来确定pid参数,但是后来我发现这样的效率很慢,经别人提醒后,我自己做了一个小小的人机交互界面,来显示pid的参数以及对pid参数进行调整。
( j  N3 N! x3 d* R3 }以下是显示效果:
# m# q, [' Q* w2 Q9 c
7 K" _, |  ~- ?4 V& a2 y. p  O0 z 20210214161912522.jpg
% d  P  T+ u  Q  @5 {% E* y  W 2021021416191267.jpg
' f: \- [# l5 r2 Z6 z; Q1 U" _6 }& }& X- I  @8 v: g
接着我在附上主要代码:  S8 m' ?) x4 u) n" a4 {. C7 H
  1. //  功能描述   : OLED 7针SPI接口演示例程(STM32F103系列)- j3 b' \( I* L! a
  2. //              说明:
    ; o/ G* I0 K9 \  A, f4 U. }" O8 l
  3. //              ----------------------------------------------------------------( [& N  B- ?7 D+ q0 g% w' q! X3 b
  4. //              GND  电源地
    # f7 z, r; M" k/ z/ Y6 h- k  ?; Q
  5. //              VCC  3.3v电源
    ' ~$ \- a1 J6 D, n' l
  6. //              D0   PA5(SCL)
    4 N( D3 r3 Y4 E! m1 T/ o4 ]
  7. //              D1   PA7(SDA)8 t2 M: O6 n. E. M# d! }; t- L! M
  8. //              RES  PB0
    * ?' G( b8 r6 `" m: i+ K% q8 J- G
  9. //              DC   PB1+ O7 U, u8 w& w9 ~4 E. I( ^
  10. //              CS   PA4              # Z% Y8 [% P, M  q- B
  11. % |% V. N* t( H6 @* s' A
  12. #include "delay.h"
    ' N4 {( x) }* [
  13. #include "sys.h"- Z( K" r& g* X$ n" G% Q4 q/ H/ w
  14. #include "oled.h") A; Q" h3 a1 v5 e. S
  15. #include  "key.h": ]5 r. H& ?4 t. s4 z) |

  16. 9 a% z! Z9 |# g1 y5 U/ s; z
  17. int main(void)5 U  q" q* t% j: o3 z+ G: M9 j
  18. {
    - Q. q' D, u8 g* p  U0 k( j2 p+ Q. i
  19.         
    & `( O. s8 @" i# N3 G
  20.         u8 t[]={10,10,10};        //因为取整数在显示屏上面显示比较好处理,所以这里把要显示的数字都改成整数: c. U8 T: Y$ q6 z
  21.         //至于在PID调参数的时候,你可以把这里的t[0]、t[1]、t[2]当成是P、I、D的参数; Q6 D& \1 `0 D$ l" m( [3 s9 l' k
  22.         //把t[0]、t[1]、t[2]除以10就可以变成小数了,u8是0-255的范围
    . r1 F; h- p. O
  23.         delay_init();
    3 m/ }* {0 m/ F4 J4 D
  24.         OLED_Init();9 ^. t/ u/ U% n& Z2 u" f, q2 f
  25.         KEY_Init();         //初始化按键
    # Z4 O+ e2 L9 d$ Q
  26.         
    9 [; k# s  Z! j+ q+ s' }5 Y
  27.         OLED_ColorTurn(0);        //0正常显示,1 反色显示
    3 L4 Y! B  Q+ m8 C0 h, c
  28.     OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
    6 j6 J0 f# P  H0 S% k/ d
  29.         OLED_Refresh();6 X) Q: D8 K( j4 r
  30.         while(1)( L( N! ^5 Z: \- w- M0 S3 r
  31.         {6 a# F% q* \" L
  32.         //由于带回来的器材有限,我这里只做了一个参数的调节,其他参数也是一样的道理
    2 `  I8 G: s  F# l9 n, s
  33.         if(KEY0==1)* c" [8 z% x6 H. |: G7 v
  34.         t[0]++;
    , H. e6 {# J9 q$ V6 }; v4 R
  35.         if(KEY1==1)
    + _5 g; c/ D* V8 w  O0 Q  [  u
  36.         t[0]--;; ]# N/ W3 u- @2 [& m
  37.                
    % S2 V2 _  ^+ ]' u" c+ G0 f6 ~' B
  38.         OLED_ShowString(0,0,"P:",16);: D) y( C3 P9 ^9 V
  39.         OLED_ShowNum(16,0,t[0],3,16);
    # i* ~: _2 G* h0 i! W; W) r- L7 V7 i8 u
  40.         OLED_ShowChar(32,0,46,16);//显示ASCII字符,一个ASCII为46的小数点        
    5 O) y5 ]# u" y; f( Z% q: \
  41.                 9 T& t  S5 I. e# x
  42.         OLED_ShowString(0,16,"I:",16);# J- L8 T! }: k& X3 s
  43.         OLED_ShowNum(16,16,t[1],3,16);
    , Y; X  ]1 i/ Z0 {; @& f2 Z# W
  44.         OLED_ShowChar(32,16,46,16);//显示ASCII字符,一个ASCII为46的小数点        * f. A0 W# E; F. |. T* U6 x7 O
  45.                
    % Q. z  o) w# z* ?9 Z1 H9 s
  46.         OLED_ShowString(0,32,"D:",16);
    . s" N5 c, ]5 G9 z  z0 \6 ], t
  47.         OLED_ShowNum(16,32,t[2],3,16);# S4 A, W1 H9 \* z0 o1 C1 b1 w
  48.         OLED_ShowChar(32,32,46,16);//显示ASCII字符,一个ASCII为46的小数点        + U& ^1 u9 e. n' @& _; y( m
  49.         ( n9 t% r$ ]- A( [+ b+ o
  50.         OLED_Refresh();
    0 [: c8 D1 [0 Q' k; O: H
  51.         delay_ms(200);                * |% t+ d- s. x2 o4 D
  52.         }( o/ A7 A. x. c7 q
  53. }
复制代码
上面只是简单的进行三个参数的调节,方法是通过按键控制参数的增加还是减少,由于我带回家的器件不是很足,程序中只做了一个参数的调节,就是通过两个按键控制参数的增减,实现对PID参数的调节并显示在屏幕上。
4 S' u2 p$ I) X# [关于oled显示屏的各种程序,可以看我之前发的文章,里面有好几种oled显示屏。! O5 c0 N7 F. F, u, h  C( u+ Z4 i. f, n
————————————————
6 e' O+ P+ X7 k2 c版权声明:i土豆& V. w, m; d$ `+ d  |/ B$ l

% B9 j  D0 Q4 s( `
+ ?8 C/ v2 r- Q# \* x8 ~. L) o% O0 k
赞 收藏 评论0 发布时间:2022-10-16 20:07

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版