In acest articol vom folosi senzorul BMP180 pentru a obtine temperatura si presiunea atmosferica.
Pentru a afisa datele obtinute vom folosi un display LCD 2004 impreuna cu adaptorul I2C. Conectarea se face simplu, pe magistrala I2C, atat adaptorul displayului cat si modulul BMP180 fiind conectate in paralel pe aceeasi pini la Arduino Mega.
Pretul modulului este de 12 lei si poate fi achizitionat de aici.
Modulul BMP180 folosit este cel din imaginea de mai jos:

Modulul se poate alimenta atat la +3.3V cat si la +5V. Iar pentru a putea utiliza modulul va trebui sa folosim o librarie extena, aceasta poate fi descarcata de aici.
Displayul folosit se conecteaza urmand instructiunile din acest articol.
Sketchul folosit este urmatorul:
#include <SFE_BMP180.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 20, 4);
SFE_BMP180 pressure;
double baseline; // baseline pressure
#define ALTITUDE 36.0 // Altitude of SparkFun's HQ in Boulder, CO. in meters
byte celsius[] = {
B00110,
B01001,
B01001,
B00110,
B00000,
B00000,
B00000,
B00000
};
void setup()
{
lcd.begin();
lcd.setCursor(0, 0);
lcd.print("Testare modul");
lcd.setCursor(0, 1);
lcd.print("barometric BM180");
lcd.setCursor(1, 3);
lcd.print("electronicstore.ro");
delay(3000);
lcd.clear();
if (pressure.begin()) {
Serial.println("BMP180 init success");
lcd.setCursor(0, 0);
lcd.print("BMP180 initializat");
lcd.setCursor(0, 1);
lcd.print("cu succes...");
lcd.setCursor(1, 3);
lcd.print("electronicstore.ro");
}
else
{
lcd.setCursor(0, 0);
lcd.print("BMP180 nu a putut fi");
lcd.setCursor(0, 1);
lcd.print("initializat...");
lcd.setCursor(1, 3);
lcd.print("electronicstore.ro");
while(1); // Pause forever.
}
delay(3000);
lcd.clear();
lcd.createChar(0, celsius);
}
void loop()
{
char status;
double T,P,p0,a;
lcd.setCursor(0, 0);
lcd.print("Alt.: ");
lcd.print(ALTITUDE);
lcd.print(" m.");
lcd.setCursor(0, 1);
status = pressure.startTemperature();
delay(status);
status = pressure.getTemperature(T);
lcd.print("Temp.: ");
lcd.print(T, 2);
lcd.print(" ");
lcd.write(byte(0));
lcd.print("C");
lcd.setCursor(0, 2);
lcd.print("Pres.: ");
delay(status);
status = pressure.getPressure(P,T);
lcd.print(P);
lcd.print(" mb");
lcd.setCursor(1, 3);
lcd.print("electronicstore.ro");
delay(3000);
lcd.clear();
}
Poze cu montajul in functiune:



Un filmulet cu montajul poate fi vizionat aici: