PID構文

エンデのはてしない物語みたいになってきた。
値が見つかりません。



task main()

{SetSensorColorRed(IN_2);

SetSensorTouch(IN_1);

SetSensorTouch(IN_4);

#define TIME 100

int standerd=27;//変数standerdに白黒の中点を入力するこれは以後の出力の基準点となる

float POW;

int currentsensor;

int previoussensor;

float kp=1.6;

float ki;

float kd=0;

float P;

float I;

float D;


previoussensor=Sensor(IN_2);//エラーを防ぐためセンサー値を初期化してからループ

while(true){


NumOut(60,LCD_LINE5,SENSOR_2);//ディスプレイにセンサー2の数値を表示

NumOut(60,LCD_LINE6,kp);//ディスプレイにkpの数値を表示
NumOut(60,LCD_LINE7,ki);
NumOut(60,LCD_LINE8,kd);//ディスプレイにkdの数値を表示

if(Sensor(IN_1)==1){

ki = ki + 0.1 ;

}

if(Sensor(IN_4)==1){

kd = kd + 0.01 ;

}


currentsensor=Sensor(IN_2);//現在の光量を計測する

P=(currentsensor-standerd)*kp;
I=*1/2*0.1;
D=*2/0.1*kd;

POW =P + I+ D;

OnFwd(OUT_C,40 - POW);

OnFwd(OUT_A,40 + POW);

Wait(TIME);

previoussensor=currentsensor;//モータ出力後現在の値を過去の値に代入し塗り替える

}}

*1:currentsensor-standerd)+ (previoussensor-standerd

*2:currentsensor-standerd)- (previoussensor-standerd