Estadoción Meteorológica

Hola buenas, mi nombre es Jordi y estoy haciendo un proyecto con Arduino. Dicho proyecto consiste en una estación meteorológica con un RTC-DS3231, BMP180, BH1750 y DHT11.

Todo esta correcto y funciona a la perfección, pero cuando me da la altitud, me la da con valor negativo y no se como solucionarlo. Llevo probando más de 24 horas y me estoy agobiando un poco.

AYUDA POR FAVOR!!!!!!!

#include <Wire.h>
#include <Adafruit_BMP085.h>
#include <BH1750.h>
#include <DHT.h>
#include "RTClib.h"

Adafruit_BMP085 bmp;
BH1750 lightMeter;
RTC_DS3231 rtc;

int SENSOR = 2;
int humitat;

DHT dht (SENSOR, DHT11);

String daysOfTheWeek[7] = { "Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte" };

void setup() {
 {
   Serial.begin(9600);
   if (!bmp.begin()) {
   Serial.println();
   while (1) {}
   }
 }

 {  
 Serial.begin(9600);
 Wire.begin();
 lightMeter.begin();
 Serial.println(F("BH1750 Test"));
 }

  if (!rtc.begin()) {
     Serial.println(F("Couldn't find RTC"));
     while (1);
  }
}

void printDate(DateTime date)
 {
  Serial.print(date.day(), DEC);
  Serial.print("/");
  Serial.print(date.month(), DEC);
  Serial.print("/");   
  Serial.print(date.year(), DEC);
  Serial.print(" ");
  Serial.print(date.hour(), DEC);
  Serial.print(":");
  Serial.print(date.minute(), DEC);
  Serial.print(":");
  Serial.print(date.second(), DEC);
  Serial.print(" (");
  Serial.print(daysOfTheWeek[date.dayOfTheWeek()]);
  Serial.print(")");                    
  Serial.println();

 }

void loop() {
 
  Serial.print("Temperatura: ");
  Serial.print(bmp.readTemperature());
  Serial.println(" *C");

  Serial.print("Pressió: ");
  Serial.print(bmp.readPressure());
  Serial.println(" Pa");
   
  Serial.print("Altitud: ");
  Serial.print(bmp.readAltitude());
  Serial.println(" metres");

  uint16_t lux = lightMeter.readLightLevel();
  Serial.print("Llum: ");
  Serial.print(lux);
  Serial.println(" lx");

  humitat = dht.readHumidity();
  Serial.print("Humitat: ");
  Serial.print(humitat);
  Serial.println("%");  

  Serial.println();
  Serial.println();

  DateTime now = rtc.now();
  
  printDate(now);
  
  delay(2000);
   
}

Jajaja perdona pero 24 hs y te agobias... si hacemos una consulta en el foro te aseguro que algunos hemos estado muchos muchos dias con un mismo problema.
Se paciente!!
Ahora edita tu post según instrucciones que te pasé por privado y al menos yo te responderé cuando vea el hilo como corresonde
Mayúsculas del titulo y código con etiquetas.

El sensor BMP es un sensor I2C.
Es el que te esta dando problemas.

Como lo tienes conectado?

Hola,

Tu problema es en esta linea Serial.print(bmp.readAltitude()); hay que ponerle la prisión de referncia a nivel del mar Serial.print(bmp.readAltitude(pReferencia));.

Repasa tu setup, tienes 2 Serial.begin(9600); no pasara nada, seguro que el segundo pisa al primero, pero no es necesario.