Introduction: Sensor BMP 180 En El LCD En Arduino
Propósito:
- Este tutorial tiene como objetivo enseñar cómo usar el sensor BMP 180 en Arduino y cómo hacer que los datos de este aparezcan en la pantalla LCD, todo conectado a montado a travez de Arduino.
Materiales:
- Pantalla LCD 16 x 2
- Arduino UNO
- Potenciometro
- Cables (Aprox. 20)
- Sensor BMP 180
Step 1: Montanje
Este es el montaje de trabajo.
Step 2: Código
- Este código es una modificación de los ejemplos que vienen por defecto en las librerías del LCD y del BMP 180.
#include <LiquidCrystral.h>
#include<SFE_BMP180.h>
#include<Wire.h>
SFE_BMP180 pressure;
#define ALTITUDE 1655.0
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
lcd.begin(16,2);
lcd.print("REBOOT");
if (pressure.begin())
lcd.print("BMP180 init success");
else
{
lcd.print("BMP180 init fail\n\n");
while(1); // Pause forever.
}
}
void loop()
{
char status;
double T,P,p0,a;
lcd.setCursor(0, 1);
lcd.print("provided altitude: ");
lcd.print(ALTITUDE,0);
lcd.print(" meters, ");
lcd.print(ALTITUDE*3.28084,0);
lcd.print(" feet");
lcd.print(millis()/1000);
status = pressure.startTemperature();
if (status != 0)
{
delay(status);
status = pressure.getTemperature(T);
if (status != 0)
{
// Print out the measurement:
lcd.print("temperature: ");
lcd.print(T,2);
lcd.print(" deg C, ");
lcd.print((9.0/5.0)*T+32.0,2);
lcd.print(" deg F");
status = pressure.startPressure(3);
if (status != 0)
{
delay(status);
status = pressure.getPressure(P,T);
if (status != 0)
{
lcd.print("absolute pressure: ");
lcd.print(P,2);
lcd.print(" mb, ");
lcd.print(P*0.0295333727,2);
lcd.print(" inHg");
p0 = pressure.sealevel(P,ALTITUDE); // we're at 1655 meters (Boulder, CO)
lcd.print("relative (sea-level) pressure: ");
lcd.print(p0,2);
lcd.print(" mb, ");
lcd.print(p0*0.0295333727,2);
lcd.print(" inHg");
a = pressure.altitude(P,p0);
lcd.print("computed altitude: ");
lcd.print(a,0);
lcd.print(" meters, ");
lcd.print(a*3.28084,0);
lcd.print(" feet");
}
else lcd.print("error retrieving pressure measurement\n");
}
else lcd.print("error starting pressure measurement\n");
}
else lcd.print("error retrieving temperature measurement\n");
}
else lcd.print("error starting temperature measurement\n");
delay(5000);
}