0
私は、0度に配置された3つのマイクの合成ベクトルの方向を示す0から2πの範囲の方向を計算することを試みています。 、および240度のマーク。すべてのマイクが動作していますが、何とか正しい音程の値を得ることができません。誰かが私のコードを見ることができますか?Arduino 3つのマイクロフォンの大きさの合成方向を計算する
void detDirection(){
//Mic1
float x0 =0;
float y0 =volts[0];
//Serial.println(x0);
// Serial.println(y0);
//Mic2
float x1 =volts[1]*cos(120.0/360 * 2*Pi);
float y1 =volts[1]*sin(120.0/360 * 2*Pi);
// Serial.println(x1);
//Serial.println(y1);
//Mic3
float x2 =volts[2]*cos(240.0/360 * 2*Pi);
float y2 = volts[2]*sin(240.0/360 * 2*Pi);
//Serial.println(x2);
//Serial.println(y2);
//Calculate resultant
float sumX = x0 + x1 + x2;
float sumY = y0 + y1 + y2;
//Serial.println(sumX);
//Serial.println(sumY);
float resultant = pow(pow(sumX,2)+pow(sumY,2),0.5);
float degree = atan2(sumY,sumX);
float fixDegree= 0 ;
//Fix degree
if(!isNeg(sumX) && !isNeg(sumY)){
fixDegree = degree;
}
else if(isNeg(sumX) && !isNeg(sumY)){
fixDegree = Pi - degree;
}
else if(isNeg(sumX) && isNeg(sumY)){
fixDegree = Pi+ degree;
}
else if (!isNeg(sumX) && isNeg(sumY)){
fixDegree = 2*Pi - degree;
}
String text = "";
text.concat(resultant);
text.concat(" ");
text.concat(fixDegree);
text.concat(" ");
//Serial.println(text);
}
マイクがどのように方向付けられているのか、どこにあるのかは明確ではありませんが、なぜ電圧がこの方向のe.tc.c.詳しく教えてください。 – Serge