ここではArduinoで皮膚温を測る基本的なプログラムを紹介していきます。センサーはLM35DZをA0へ入れることを想定しています。
ファイル:temp1
内容:とりあえずアナログチャンネルから皮膚温を読む
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | int analogValue = 0; // アナログ値を格納する変数 void setup(){ Serial.begin(9600); // シリアルポートを9600bpsで開く } void loop(){ analogValue = analogRead(0); // アナログピン0から読み取る float temp; temp=(double)analogValue/1024*500.0; Serial.print(temp); //読んだ値をPCへ送る Serial.println(); // 改行を送信 delay(100); // 100ミリ秒停止 } |
ファイル:temp2
内容:10回サンプルし、その平均を表示する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | int v = 0; // アナログ値を格納する変数 float sum; float average; void setup(){ Serial.begin(9600); // シリアルポートを9600bpsで開く } void loop(){ sum=0; for(int i=0;i<10;i++){ sum = sum+analogRead(0); // アナログピン0から読み取る } average=sum/10.0; float temp; temp=(double)average/1024*500.0; Serial.print(temp); //読んだ値をPCへ送る Serial.println(); // 改行を送信 delay(100); // 100ミリ秒停止 } |
ファイル:temp3
内容:100回サンプルし、その平均を表示する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | int v = 0; // アナログ値を格納する変数 float sum; float average; void setup(){ Serial.begin(9600); // シリアルポートを9600bpsで開く } void loop(){ sum=0; for(int i=0;i<100;i++){ sum = sum+analogRead(0); // アナログピン0から読み取る } average=sum/100.0; float temp; temp=(double)average/1024*500.0; Serial.print(temp); //読んだ値をPCへ送る Serial.println(); // 改行を送信 delay(100); // 100ミリ秒停止 } |
実際に動作させてみると、サンプル数が多いほど皮膚温の変化が安定していることがわかります。Arduinoはそこそこのサンプル速度が出るので、なるべく多くサンプルし、その平均を求めることで、より正確な温度を求めることができます。