Quedaría una cosa así:
Y el código sería este :
#include <SD.h> //Load SD card library
#include <SPI.h> //Load SPI Library
#include "Wire.h" // imports the wire library for talking over I2C
#include "Adafruit_BMP085.h" // import the Pressure Sensor Library We are using Version one of Adafruit API for this sensor
Adafruit_BMP085 Sensor; // create sensor object called mySensor
// Ok everyone so this is the base that we will have for our data output to sd card coding.
float tempC; // Variable for holding temp in C
float pressure; //Variable for holding pressure reading
float altitude; //Variable Fo altitude
float sealevelpressure;
float al;
const int greenPin = 9; //this is here for us to activate our pin warning system.
const int redPin = 7;
int chipSelect = 4; //chipSelect pin for the SD card Reader
File SensorData; //Data object you will write your sesnor data to
void setup(){
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
Serial.begin(9600); //turn on serial monitor
Sensor.begin(); //initialize pressure sensor mySensor
if (!SD.begin(4)) {
Serial.println("Card failed, or not present");
// don't do anything more:
return;
}
Serial.println("card initialized.");
Serial.println("PROYECTO ATLANTIS 1.");
}
void loop() {
if (!Sensor.begin())
{
digitalWrite(redPin, HIGH); // turns on red warning LED
digitalWrite(greenPin, LOW); // turns off green LED
Serial.println("DANGER! DANGER! Check wiring, Check code, Check well... I don't know just look busy");
}
else
{
(Sensor.begin());
SensorData = SD.open("Globo3.txt", FILE_WRITE);
if (!SensorData)
{
digitalWrite(redPin, HIGH); // turns on red warning LED
digitalWrite(greenPin, LOW); // turns off green LED
Serial.println("Comprobando tarjeta SD , Then Press Reset");
delay(3000);
}
else
{
(SensorData);
digitalWrite(greenPin, HIGH); // turns on the green pin
digitalWrite(redPin, LOW); // turns off red warning LED
tempC = Sensor.readTemperature(); //Read Temperature from BMP180
pressure = Sensor.readPressure(); //Read Pressure
altitude = Sensor.readAltitude(101820); //Altitude
al = Sensor.readAltitude();
sealevelpressure = Sensor.readSealevelPressure();
Serial.print("La temperatura es: "); //Print Your results
Serial.print(tempC);
Serial.println(" Grados C");
Serial.print("La presion es: ");
Serial.print(pressure);
Serial.println(" Pa.");
Serial.print("La altura real es: ");
Serial.print(altitude);
Serial.println(" metros");
Serial.print("La altitud es: ");
Serial.print(al);
Serial.println("Metros");
Serial.print("La presion a nivel de mar es: ");
Serial.print(sealevelpressure);
Serial.println(" metros (calculado)");
Serial.println("");
delay(50000); //para la prueba le pongo en un retraso de 50000 ms para nuestro lanzamiento, un retraso mayor sería más ideal y ahorraría energía de la batería.
SensorData.print(tempC); //write temperature data to card
SensorData.print(","); //write a commma
SensorData.print(pressure);
SensorData.print(",");
SensorData.print(altitude); //write pressure and end the line (println)
SensorData.print(",");
SensorData.println(sealevelpressure);
SensorData.close(); //close the file
}
}
}
Me queda que hacer el que mide la temperatura exterior, y quizás le ponga un relé programado para poner en servicio el panel solar.
Aquí pongo un video, donde se puede ver el Arduino trabajando con todos los sensores y alimentado únicamente por la placa solar. Trabaja a la perfección.
Hay un problema con este altímetro, que solo llega hasta 9.000 metros de altitud y ya no me queda tiempo de pedir otro. Aparte que no encuentro otro que mida más altura. Habrá que calcular la altura total por una regla de tres
ResponderEliminar