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

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

[复制链接]
STMCU小助手 发布时间:2022-10-16 20:07
stm32利用oled显示屏与按键进行PID参数调节实现人机交互

上一个学期在学校做四轮车利用PID实现直线走,在调试过程中,我之前是每改一个参数就下载程序进控制板进行调试,观察车是否偏移来确定pid参数,但是后来我发现这样的效率很慢,经别人提醒后,我自己做了一个小小的人机交互界面,来显示pid的参数以及对pid参数进行调整。
以下是显示效果:

20210214161912522.jpg
2021021416191267.jpg

接着我在附上主要代码:
  1. //  功能描述   : OLED 7针SPI接口演示例程(STM32F103系列)
  2. //              说明:
  3. //              ----------------------------------------------------------------
  4. //              GND  电源地
  5. //              VCC  3.3v电源
  6. //              D0   PA5(SCL)
  7. //              D1   PA7(SDA)
  8. //              RES  PB0
  9. //              DC   PB1
  10. //              CS   PA4              

  11. #include "delay.h"
  12. #include "sys.h"
  13. #include "oled.h"
  14. #include  "key.h"

  15. int main(void)
  16. {
  17.         
  18.         u8 t[]={10,10,10};        //因为取整数在显示屏上面显示比较好处理,所以这里把要显示的数字都改成整数
  19.         //至于在PID调参数的时候,你可以把这里的t[0]、t[1]、t[2]当成是P、I、D的参数
  20.         //把t[0]、t[1]、t[2]除以10就可以变成小数了,u8是0-255的范围
  21.         delay_init();
  22.         OLED_Init();
  23.         KEY_Init();         //初始化按键
  24.         
  25.         OLED_ColorTurn(0);        //0正常显示,1 反色显示
  26.     OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
  27.         OLED_Refresh();
  28.         while(1)
  29.         {
  30.         //由于带回来的器材有限,我这里只做了一个参数的调节,其他参数也是一样的道理
  31.         if(KEY0==1)
  32.         t[0]++;
  33.         if(KEY1==1)
  34.         t[0]--;
  35.                
  36.         OLED_ShowString(0,0,"P:",16);
  37.         OLED_ShowNum(16,0,t[0],3,16);
  38.         OLED_ShowChar(32,0,46,16);//显示ASCII字符,一个ASCII为46的小数点        
  39.                
  40.         OLED_ShowString(0,16,"I:",16);
  41.         OLED_ShowNum(16,16,t[1],3,16);
  42.         OLED_ShowChar(32,16,46,16);//显示ASCII字符,一个ASCII为46的小数点        
  43.                
  44.         OLED_ShowString(0,32,"D:",16);
  45.         OLED_ShowNum(16,32,t[2],3,16);
  46.         OLED_ShowChar(32,32,46,16);//显示ASCII字符,一个ASCII为46的小数点        
  47.         
  48.         OLED_Refresh();
  49.         delay_ms(200);               
  50.         }
  51. }
复制代码
上面只是简单的进行三个参数的调节,方法是通过按键控制参数的增加还是减少,由于我带回家的器件不是很足,程序中只做了一个参数的调节,就是通过两个按键控制参数的增减,实现对PID参数的调节并显示在屏幕上。
关于oled显示屏的各种程序,可以看我之前发的文章,里面有好几种oled显示屏。
————————————————
版权声明:i土豆


收藏 评论0 发布时间:2022-10-16 20:07

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版