/*
* Test Program for LM35DZ
*/
#define s_size 50 // アナログデータ格納領域
#define h_size 25 // ヒストグラム格納領域
#define A_inPin A0 // アナログ入力ピン番号
float A_val; //
アナログ入力値
float tempC = 0; // 摂氏値( ℃ )
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
int buf[s_size];
int hist[h_size];
int imin=1023;
int imax=0;
int tmp;
int pos;
int i;
//Clear Histgram
for(i=0;i<h_size;i++) hist[i]=0;
//Get Analog Data
for(i=0;i<s_size;i++) {
buf[i] = analogRead( A_inPin );
if (buf[i] > imax) imax=buf[i];
if (buf[i] < imin) imin=buf[i];
// Serial.print(buf[i]);
// Serial.print(" ");
}
Serial.print("imin=");
Serial.print(imin);
Serial.print(" imax=");
Serial.print(imax);
//Set Histgram
for(i=0;i<s_size;i++) {
tmp=buf[i]-imin;
if(tmp < h_size) hist[tmp]++;
}
//Get Max Histgram
tmp=0;
for(i=0;i<h_size;i++) {
// Serial.print(hist[i]);
// Serial.print(" ");
if (hist[i] > tmp) {
tmp=hist[i];
pos=i;
}
}
// Serial.print(" pos=");
// Serial.println(pos);
A_val=imin+pos;
Serial.print(" A_val=");
Serial.print(A_val);
Serial.print(" Temp=");
tempC = ((5.0 * A_val) / 1024.0) * 100.0;
Serial.println( tempC );
delay(1000);
}
|