/*
Pin configuration
BMP180
VIN 3,3V
GND GND
SCL A5
SDA A4
SD Card
CS 4
SCK 13
MOSI 11
MISO 12
VCC 5V
GND GND
*/
#include <SD.h> //Including SD library
#include <SPI.h> //Including SPI library
#include <Wire.h> //Including wire library
#include <SFE_BMP180.h> //Including BMP180 library
SFE_BMP180 pressure; //Creating an object for the BMP180
SFE_BMP180 bmp180;
Sd2Card card; //Creating an object for the SD card
File myFile; //Preparing the files
int pinCS = 4; //Pin for the sd card
float Po = 1013.0;
char filename[] = "LOGGER00.CSV";
void setup()
{
pinMode(pinCS, OUTPUT); //initialize digital pin pinCS as an output
pinMode(LED_BUILTIN, OUTPUT); //initialize digital pin LED_BUILTIN as an output
// create a new file
for (uint8_t i = 0; i < 100; i++) {
filename[6] = i/10 + '0';
filename[7] = i%10 + '0';
if (! SD.exists(filename)) {
break; // leave the loop!
}
}
}
void loop()
{
if ((!pressure.begin()) || (!card.init(SPI_HALF_SPEED, 4)) || (!myFile)) //If initialization failed, the built-in led blink:
{
digitalWrite(LED_BUILTIN, HIGH); //turn the led on (High is the voltage level)
delay(1000);
digitalWrite(LED_BUILTIN, LOW); //turn the led off (High is the voltage level)
delay(1000);
}
char status;
double T, P, p0, alt; //Creating variables for temp, pressure and relative pressure
status = pressure.startTemperature();
if (status != 0) {
delay(status);
status = pressure.getTemperature(T);
if (status != 0) {
status = pressure.startPressure(3);
if (status != 0) {
delay(status);
status = pressure.getPressure(P, T);
if (status != 0) {
alt = bmp180.altitude(P, Po);
}}}}
//SD Card setup
myFile = SD.open(filename, FILE_WRITE);
if (myFile) {
myFile.print("Altuino : ");
myFile.print("\t");
myFile.print(alt);
myFile.print("\t");
myFile.print(" Meters");
myFile.close();
}
delay(500);
}
Comments