官方的代码:
#include <PID_v1.h>
double Setpoint,Input ,Output;
PID myPID(&Input,&Output,&Setpoint,2,5,1,DIRECT);
void setup() {
Serial.begin(9600);
Input=80;
Setpoint=100;
myPID.SetMode(AUTOMATIC);
}
void loop() {
Input = 80;
myPID.Compute();
//analogWrite(3,Output);
Serial.print("Output= ");
Serial.println(Output);
delay(500);
}
原代码的 Input 是读取 A0 口的模拟值 ( 有的代码里还会 map(val, 0 ,1023 , 0, 255) 类似这样的);
我这里把 Input 设置为一个固定值, setpoint 定为 100
为什么 OUTPUT 一开始是接近 setpoint ,后面就一直向上,直到 255,就不变了,我觉得很纳闷,
到底这个 Input 有什么用?还是代码本身有什么问题?
|