Arduinoでのセンサー値の平均計算方法


  1. 方法1: サンプリングと平均値の計算 この方法では、センサーからの複数のサンプル値を取得し、それらの平均値を計算します。
const int sensorPin = A0;  // センサーの接続ピン
const int numSamples = 10;  // サンプル数
void setup() {
  Serial.begin(9600);
}
void loop() {
  int sensorValue = 0;
  // 複数のサンプル値を取得
  for (int i = 0; i < numSamples; i++) {
    sensorValue += analogRead(sensorPin);
    delay(10);
  }
// 平均値を計算
  sensorValue /= numSamples;
  Serial.print("Average sensor value: ");
  Serial.println(sensorValue);
  delay(1000);
}
  1. 方法2: 移動平均法の使用 移動平均法は、直近の一定数のサンプル値の平均を計算する方法です。これにより、ノイズの影響を軽減することができます。
const int sensorPin = A0;  // センサーの接続ピン
const int numSamples = 10;  // サンプル数
int sensorValues[numSamples];
int currentIndex = 0;
void setup() {
  Serial.begin(9600);
}
void loop() {
  // センサー値を取得
  int sensorValue = analogRead(sensorPin);
  // 配列にセンサー値を格納
  sensorValues[currentIndex] = sensorValue;
  currentIndex = (currentIndex + 1) % numSamples;
  // 配列の平均値を計算
  int averageValue = 0;
  for (int i = 0; i < numSamples; i++) {
    averageValue += sensorValues[i];
  }
  averageValue /= numSamples;
  Serial.print("Moving average sensor value: ");
  Serial.println(averageValue);
  delay(1000);
}

これらの方法を使用して、Arduinoでセンサーの平均値を計算することができます。メインのループ内でセンサー値を取得し、適切な方法を選んで平均値を計算することが重要です。注意点として、サンプル数やディレイの値を調整することで、精度や応答性を調整することができます。