sábado, 20 de junio de 2015

Proyecto Atlantis - Progamación software del Arduino.

Bueno, poco a poco, voy ensamblando los códigos para programar el Arduino, por lo pronto ya tengo hecho el software del altímetro, que mide altura, presión y temperatura interior del habitáculo.
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.

1 comentario:

  1. 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