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;//モータ出力後現在の値を過去の値に代入し塗り替える
}}