下面的代码有三个double *类型的参数。该代码是Arduino PID库的一部分,用户通常会读取模拟端口或某种传感器作为“输入”项的参数,某些固定值或用户控制的变量作为“设定值“一词。但是参数是double *类型的。当他提供双倍数据时用户不应该得到错误吗?这个构造函数代码如何将指针作为参数?
PID::PID(double* Input, double* Output, double* Setpoint,
double Kp, double Ki, double Kd, int ControllerDirection)
{
myOutput = Output;
myInput = Input;
mySetpoint = Setpoint;
inAuto = false;
PID::SetOutputLimits(0, 255); // default output limit corresponds to
// the arduino pwm limits
SampleTime = 100; // default Controller Sample Time is 0.1 seconds
PID::SetControllerDirection(ControllerDirection);
PID::SetTunings(Kp, Ki, Kd);
lastTime = millis()-SampleTime;
}
是否构造只取用户提供了双重的地址?
如果用户正在读取一些温度数据,比如double temp = AnalogRead(1)。因此,读取来自模拟引脚1的任何信息,myOutput是否只是这些传入温度读数的地址?
myInput,myOutput和mySetpoint在另一个成员函数中被取消引用。
double input = *myInput;
double error = *mySetpoint - input;
请发表[MCVE ]。你的问题目前包含甚至不使用你正在谈论的ctor。 –
*你*如何使用课堂?你实际提供给构造函数的是什么参数?如果你提供了一个'double' *值*(而不是一个指向'double'的指针),那么会出现错误。 –
_“构造函数是否只接受用户提供的double的地址?”_是的。恐怕我不明白你的问题? –