前提・実現したいこと
ESP32を使って、センサ1が最大値をとったときのセンサ2の値を知りたい。
発生している問題・エラーメッセージ
下記のソースコードを作成し、Serial.printでセンサ1の最大値であるpeakの値は正しく出力されるが、そのときのセンサ2の値であるpeak2は-100が出力されてしまう。
センサ1の最大値を返す関数であるmaxv関数は正常に動作しているが、センサ1が最大値をとるときのセンサ2の値を返すmaxV関数(maxv関数をベースに書き加えた)では初期値である-100が
返され、本来の正しい値が返されていない。
センサ1が最大値をとったときのセンサ2の値を得るにはどのように記述すればよいかアドバイスいただけるとありがたいです。
よろしくお願いします。
該当のソースコード
double x[N];
double y[N];
double z[N];
define N 1000
void setup(){省略}
void loop(){
//最大値を表示
double peak = maxv(x,N); //センサ1の最大値を入れるための変数
double peak2 = maxV(y,z,N); //センサ1が最大値のときのセンサ2の値を入れるための変数
Serial.print(peak,3);
Serial.print("");
Serial.println(peak2,3);
}
double maxv(double data[],int num){ //センサ1の最大値を求めるための関数
double maxnum=-100;//仮の最大値
double sensor1;
for(int i=i;i<num;i=i+1){
sensor1 = analogRead(A0);
if(sensor1>0.1){ data[i] = sensor1; //より大きな値に入れ替える if(maxnum < data[i]) maxnum=data[i]; delay(10); }
if(maxnum*0.7>=data[i])
break;
}
//値を返す
return maxnum;
}
double maxV(double data[],double data2[],int num){ //センサ1の最大値のときのセンサ2の値を求めるための関数
double maxnum=-100;//仮の最大値
double maxnum2=-100;//仮の最大値
double sensor1;
double sensor2;
for(int i=i;i<num;i=i+1){
sensor1 = analogRead(A0);
sensor2 = analogRead(A1);
if(sensor1>0.1){ data[i] = sensor1; data2[i] = sensor2; //より大きな値に入れ替える if(maxnum < data[i]) maxnum=data[i]; //i番目のときのdata配列をmaxnumに入れる maxnum2=data2[i]; //i番目のときのdata2配列をmaxnum2に入れる delay(10); }
if(maxnum*0.7>=data[i])
break;
}
//値を返す
return maxnum2;
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/28 15:00
2020/01/28 22:38
2020/01/28 23:01
2020/01/29 13:50
2020/01/30 14:16