예전에 SD카드에 센서로 측정한 값을 어떻게 저장해야 하는지 여쭤봤을때 튜토리얼을 참고하라고 말씀하셔서 최대한 참고하는 방향으로 진행해왔습니다.
하지만 튜토리얼을 봐도 어떻게해야 측정값을 저장할 수 있는지 이해가 안됬습니다..
일단 센서가 작동하도록 아래와 같은 예문을 작성해서 측정이 되는것을 확인하였는데, 아래 예문으로 측정한 값을 어떻게 해야 SD에 저장할 수 있는지를 모르겠습니다.
예문 어느부분에 무엇을 추가해야할까요?
#include "Barometer.h"
#include
float temperature;
float pressure;
float altitude;
Barometer myBarometer;
int ad_conv(byte channel, byte num);
int calc_RH10(int adval);
int calc_TC10(int adval);
void display(int x);
void setup()
{
Serial.begin(9600);
myBarometer.init();
}
void loop()
{
temperature = myBarometer.bmp085GetTemperature(myBarometer.bmp085ReadUT()); //Get the temperature, bmp085ReadUT MUST be called first
pressure = myBarometer.bmp085GetPressure(myBarometer.bmp085ReadUP());//Get the temperature
altitude = myBarometer.calcAltitude(pressure); //Uncompensated caculation - in Meters
Serial.print("Temperature: ");
Serial.print(temperature, 2); //display 2 decimal places
Serial.println("deg C");
Serial.print("Pressure: ");
Serial.print(pressure, 0); //whole number only.
Serial.println(" Pa");
Serial.print("Altitude: ");
Serial.print(altitude, 2); //display 2 decimal places
Serial.println(" m");
int adval, RH10, TC10;
adval = ad_conv(0, 32); // 32 samples on Channel 0
RH10 = calc_RH10(adval);
display(RH10);
Serial.print("% ");
adval = ad_conv(1, 32);
TC10 = calc_TC10(adval);
display(TC10);
Serial.println();
delay(5000);
}
int ad_conv(byte channel, byte num)
{
long sum = 0;
byte n;
for (n = 0; n < num; n++)
{
sum = sum + analogRead(channel);
}
return (sum / num);
}
int calc_RH10(int adval)
{
int RH10;
RH10 = adval + 6 * adval / 10 + 3 * adval / 100; // 1.63 * adval
return (RH10);
}
int calc_TC10(int adval)
{
int TC10;
TC10 = adval + 2 * adval / 10 + adval / 100 - 380;
TC10 = TC10 - 320;
TC10 = TC10 / 1.8;
return (TC10);
}
void display(int x)
{
int whole, fract;
whole = x / 10;
fract = x % 10;
Serial.print(whole, DEC);
Serial.print(".");
Serial.print(fract, DEC);
}
|
다음글 |
SD카드에 기록한 값이 세로로 나옵니다.
|
2015-08-22 |