stm32は、有機ELディスプレイとボタンを使用してPIDパラメーターを調整し、人間とコンピューターの相互作用を実現します
前学期は、学校で四輪車を使ってPIDを使って直線歩行をしていましたが、デバッグ中は、パラメータを変更するたびにプログラムを制御盤にダウンロードしてデバッグし、観察していました。 PIDパラメータを決定するために車がオフセットされているかどうかを確認しましたが、この種の効率は非常に遅いことがわかりました。他の人に思い出された後、私はpidパラメータを表示し、pidパラメータを調整するための小さな人間とコンピュータの対話インターフェイスを作成しました。
表示効果は次のとおりです。
次に、メインコードを添付します。
// 功能描述 : OLED 7针SPI接口演示例程(STM32F103系列)
// 说明:
// ----------------------------------------------------------------
// GND 电源地
// VCC 3.3v电源
// D0 PA5(SCL)
// D1 PA7(SDA)
// RES PB0
// DC PB1
// CS PA4
#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "key.h"
int main(void)
{
u8 t[]={
10,10,10}; //因为取整数在显示屏上面显示比较好处理,所以这里把要显示的数字都改成整数
//至于在PID调参数的时候,你可以把这里的t[0]、t[1]、t[2]当成是P、I、D的参数
//把t[0]、t[1]、t[2]除以10就可以变成小数了,u8是0-255的范围
delay_init();
OLED_Init();
KEY_Init(); //初始化按键
OLED_ColorTurn(0); //0正常显示,1 反色显示
OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
OLED_Refresh();
while(1)
{
//由于带回来的器材有限,我这里只做了一个参数的调节,其他参数也是一样的道理
if(KEY0==1)
t[0]++;
if(KEY1==1)
t[0]--;
OLED_ShowString(0,0,"P:",16);
OLED_ShowNum(16,0,t[0],3,16);
OLED_ShowChar(32,0,46,16);//显示ASCII字符,一个ASCII为46的小数点
OLED_ShowString(0,16,"I:",16);
OLED_ShowNum(16,16,t[1],3,16);
OLED_ShowChar(32,16,46,16);//显示ASCII字符,一个ASCII为46的小数点
OLED_ShowString(0,32,"D:",16);
OLED_ShowNum(16,32,t[2],3,16);
OLED_ShowChar(32,32,46,16);//显示ASCII字符,一个ASCII为46的小数点
OLED_Refresh();
delay_ms(200);
}
}
上記は3つのパラメータの簡単な調整です。方法はボタンでパラメータの増減を制御する方法です。持ち帰ったデバイスは十分ではないため、プログラムで行われるパラメータ調整は1つだけです。 、パラメータは2つのボタンで制御されます。PIDパラメータの増減を調整して画面に表示できます。
OLEDディスプレイのさまざまなプログラムについては、私の前の記事を読むことができます、いくつかのOLEDディスプレイがあります。
コードリンクは以下に添付されています:
stm32はOledディスプレイとボタンを使用してPIDパラメータを表示および調整します。
できるだけ早く送信します。ご不明な点がございましたら、以下にコメントしてください。