Ich versuche gerade einen BMP085 Luftdrucksensor auszulesen. Dazu habe ich mir ein fertiges Programm aus dem Internet kopiert:
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085.h>
/*
TWDruck Version 1.0 vom 06.07.2013
Thomas Wenzlaff http://www.wenzlaff.de
Programm Größe: 12296 Bytes
Dies Programm liest den Luftdrucksensor und den Temperatursensor endlos aus,
und gibt die Werte über die Serielle-Schnittstelle mit Leerzeichen getrennt aus.
Kommentare beginnen mit #.
z.B.
# Luftdruck und Temperatur Messprogramm
# TWDruck 1.0 vom 06.07.2013
# http://www.wenzlaff.de
# Sensor: BMP085
# Treiber Version: 1
# Unique ID: 10085
# [Luftdruck in hPa] [Temperatur in Grad Celsius] [Höhe in Meter]
1022.59 26.84 -80.49
1022.73 26.84 -81.69
1022.63 26.85 -80.83
1022.51 26.85 -79.80
...
Anschluss an den Nanu Arduino:
Das BMP085 an:
SCL an A5
SDA an A4
VDD Plus 3.3V DC
Masse Minus
*/
const long MESSINTERVAL = 5000; // Messintervall in milli Sekunden
const long SENSOR_ID = 10085; // eindeutige Sensor ID
String KOMMENTAR = "# "; // Kommentar präfix
String TRENNER = " "; // Trennzeichen der Werte
Adafruit_BMP085 bmp = Adafruit_BMP085(SENSOR_ID);
void anzeigeDetails(void)
{
sensor_t sensor;
bmp.getSensor(&sensor);
Serial.println(KOMMENTAR +"Luftdruck und Temperatur Messprogramm");
Serial.println(KOMMENTAR +"TWDruck 1.0 vom 06.07.2013");
Serial.println(KOMMENTAR +"http://www.wenzlaff.de");
Serial.print (KOMMENTAR + "Sensor: "); Serial.println(sensor.name);
Serial.print (KOMMENTAR + "Treiber Version: "); Serial.println(sensor.version);
Serial.print (KOMMENTAR + "Unique ID: "); Serial.println(sensor.sensor_id);
delay(500);
}
void setup(void)
{
Serial.begin(9600);
if(!bmp.begin())
{
Serial.print(KOMMENTAR + "Kein BMP085 gefunden ... Prüfe I2C Adresse!");
while(1);
}
anzeigeDetails();
}
void loop(void)
{
sensors_event_t event; // neues Sensor ereignis
bmp.getEvent(&event);
if (event.pressure)
{
Serial.print(event.pressure); // Luftdruck in hPa
Serial.print(TRENNER);
/* Calculating altitude with reasonable accuracy requires pressure *
* sea level pressure for your position at the moment the data is *
* converted, as well as the ambient temperature in degress *
* celcius. If you don't have these values, a 'generic' value of *
* 1013.25 hPa can be used (defined as SENSORS_PRESSURE_SEALEVELHPA *
* in sensors.h), but this isn't ideal and will give variable *
* results from one day to the next. *
* *
* You can usually find the current SLP value by looking at weather *
* websites or from environmental information centers near any major *
* airport. *
* *
* For example, for Paris, France you can check the current mean *
* pressure and sea level at: http://bit.ly/16Au8ol */
float temperature;
bmp.getTemperature(&temperature);
Serial.print(temperature); // Temperatur in Grad Celsius
Serial.print(TRENNER);
/* Then convert the atmospheric pressure, SLP and temp to altitude */
/* Update this next line with the current SLP for better results */
float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA; // 1013.25F Average sea level pressure is 1013.25 hPa
Serial.print(bmp.pressureToAltitude(seaLevelPressure,
event.pressure,
temperature)); // Höhe in Meter
Serial.println();
}
else
{
Serial.println(KOMMENTAR +"Sensor error");
}
delay(MESSINTERVAL);
}
Allerdings bekomme ich dabei immer folgende Fehlermeldung:
sketch_nov04a:46: error: 'Adafruit_BMP085' does not name a type
sketch_nov04a.ino: In function 'void anzeigeDetails()':
sketch_nov04a:51: error: 'bmp' was not declared in this scope
sketch_nov04a.ino: In function 'void setup()':
sketch_nov04a:66: error: 'bmp' was not declared in this scope
sketch_nov04a.ino: In function 'void loop()':
sketch_nov04a:78: error: 'bmp' was not declared in this scope
Woran könnte das liegen/wie kann ich das beheben?
Schonmal Danke im Vorraus!
Mfg,
Matthias