Hallo zusammen,
ich bin gerade dabei mir eine kleine Einheit zur Höhenmessung in einem Modellflugzeug zu bauen - die Höhe wird per BMP180 gemessen und das ganze wird dann entweder live zum Boden per Bluetooth übertragen (HC-06), oder die Min / Max - Werte sollen später am Boden ausgelesen werden können.
Die Übertragung in Echtzeit funktioniert schon, aber mit dem auslesen von min und max - Wert hab ich so meine Probleme:
#include <SFE_BMP180.h>
#include <Wire.h>
#include <SoftwareSerial.h>
SoftwareSerial BT(10, 11);
SFE_BMP180 pressure;
double baseline;
char b;
double maximum;
void setup()
{
Serial.begin(9600);
Serial.println("REBOOT");
BT.begin(9600);
BT.println("Hello from Arduino");
if (pressure.begin())
Serial.println("BMP180 init success");
else
{
Serial.println("BMP180 init fail (disconnected?)\n\n");
while(1);
}
baseline = getPressure();
}
void loop()
{
double a,P;
Serial.println("Test");
if (BT.available()) //Hier komm ich gar nicht rein; die Schleife ist aus nem
delay(10); //anderen Sketch geklaut, funktioniert dort perfekt
{
b=(BT.read());
delay(10);
if (b=='1')
{
BT.println(maximum);
}}
P = getPressure();
a = pressure.altitude(P,baseline);
Serial.print("relative altitude: ");
if (a >= 0.0) BT.print(" ");
BT.println(a,1);
//if (a >= 0.0) BT.print(" ");
if(a > maximum){
maximum = a;
}
delay(1000);
}
double getPressure()
{
char status;
double T,P,p0,a;
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)
{
return(P);
}
else Serial.println("error retrieving pressure measurement\n");
}
else Serial.println("error starting pressure measurement\n");
}
else Serial.println("error retrieving temperature measurement\n");
}
else Serial.println("error starting temperature measurement\n");
}
Aus irgendeinem Grund wird die Schleife fürs ausgeben nicht betreten - aber warum?
MfG Konrad