以下のコードはdouble *型の3つの引数を持っています。このコードは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' * value *(' double'へのポインタではない)を指定すると、エラーが発生します。 –
_ "コンストラクタはユーザーが提供するダブルのアドレスを取るだけですか?"私はあなたの質問を得ることができないのだろうか? –