PID

float kp=5 ; //比例

float ki=0 ; //積分

float kd=5 ; //微分

int c = 0 ; //常數

int set = 500 ; //設定點 (介於AnalogRead讀數範圍 0~1023之間)

int now,istate ;

int p,i,d,err,old,output ;

double

void setup() {

}

void loop() {

now = analogRead(A0);

err = now - set ;

p = kp * err ;

istate += err;

istate=constrain(istate,-10,10);

i = ki*istate ;

d = kd * (now - old) ;

old = now ;

output=constrain(p + i + d + c ,0,255);

analogRead(3,output);

delayMicroseconds(10);

}