鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

Arduinoでマイク接続して、波形を解析したいのだ。

サンプリングレートどれくらい出せるのだろうと思いましたが、
アナログリード100usecかかるようで最大でも10kHZということでしょうか。
2chで録音すると5khzになってしまって、ちょっと足りない気もしますが・・・
Arduino - AnalogRead

さて、実機Genuino101で測ってみると・・・
28マイクロsecond出てました。
結構早いかもかも。
こいつはintelの16bitCPU積んでるらしく早いらしい。
まぁ、なんでもいい。当初の目的が果たせれば!

const int TRY_COUNT = 1000;
unsigned long microTime[TRY_COUNT];
unsigned int wave[TRY_COUNT];
int total = 0;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  while (!Serial) {
    ;
  }
}

void loop() {

  total = 0;

  for(int i=0;i<TRY_COUNT;i++){
    int val = analogRead(0);
    microTime[i] = micros();
    wave[i] = val;
  }
  for(int i=0;i<1000-1;i++){
    total = total +   microTime[i+1] - microTime[i];
    Serial.println(wave[i]);
  }
  Serial.println("average");
  Serial.println(total /(TRY_COUNT - 1));
  delay(1000);
}