Introduction: Tecnologia PT

En este tutorial padres encontrar como hacer que la información dada por el sensor BMP180 se muestre en el LCD, fusionando los montajes y los códigos. Espero que les sea útil

Step 1: Materiales

Para hacer un código y una conexión en el protoboard utilizando el LCD y el sensor BMP180 se necesitan los siguientes materiales:

1. Protoboard

2. Arduino Uno

3.LCD

4.Sensor BMP180

5. Cables (19)

6.Potenciometro

7. Libraries previamente instaladas(3(LiquidCrystal, Wire, SFE_BMP180))

*La libreria de BMP180 puede ser descargada en sparkfun.com

Step 2: Montaje

Recomendaciones: Conecte cada aparato por separado en orden ( ej: primero LCD, luego BMP180 y por ultimo Potenciometro)

Step 3: Codigo

Se utiliza el código BMP altitud example proporcionado en los ejemplos de la librería instalada (BMP180) en Arduino como el código base. Este código tiene que ser fusionado con el código LiquidCristal Helloworld, que también es un ejemplo de Arduino, para que en el display del LCD se muestren los datos que manda el sensor. El código es el siguiente:

V10 Mike Grusin, SparkFun Electronics 10/24/2013
V1.1.2 Updates for Arduino 1.6.4 5/2015 *

/ Debes incluir las librerias BMP180, Wire y LiquidCrystal en este proyecto // (Wire y LiquidCrystal son librerias standard de Arduino)

#include <SFE_BMP180.h> #include <Wire.h> #include <LiquidCrystal.h>

// Inicializa la libreria con los pines de interface LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// Necesitara crear un objet SFE_BM0180, aqui llamado "pressure":

SFE_BMP180 pressure;

double baseline;

void setup() { Serial.begin(9600); lcd.println("REBOOT"); lcd.begin(16, 2); // Print a message to the LCD. lcd.print("");

// Inicializa el sensor (es importante tener los valores calibrados guardados en el dispositivo

if (pressure.begin()) Serial.println("BMP180 init success"); else { // si tiene problemas o errores en el codigo, consulte la parte de arriba del codigo.

lcd.println("BMP180 init fail (disconnected?)\n\n"); while(1); // Pausa infinita }

// Get the baseline pressure: baseline = getPressure(); lcd.print("baseline pressure: "); lcd.print(baseline); lcd.println(" mb"); }

void loop() { double a,P; // Consigue nuevos valores de presion

P = getPressure();

// Muestra la altitud relativa

a = pressure.altitude(P,baseline); lcd.print("relative altitude: "); if (a >= 0.0) Serial.print(" "); // add a space for positive numbers lcd.print(a,1); lcd.print(" meters, "); if (a >= 0.0) Serial.print(" "); // add a space for positive numbers lcd.print(a*3.28084,0); lcd.println(" feet"); delay(500); }

double getPressure() { char status; double T,P,p0,a;

// You must first get a temperature measurement to perform a pressure reading. Debes tener una medida de temperatura antes de tener una lectura de presion // Start a temperature measurement:Empieza una medicion de temperatura // Si no hay errores, el numero de ms para esperar se mostrara. // Si hay errores, se mostrara un 0

status = pressure.startTemperature(); if (status != 0) { // Espere a que se termine la medicion de la temperatura

delay(status);

// Recupera la medida de completa de temperatura // Esta medida esta guardada en la variable T // Utiliza &T para dar la direccion de T a la funcion. // Si la ffuncion muestra 1 no hay errores, de lo contrario marcara 0

status = pressure.getTemperature(T); if (status != 0) { // Start a pressure measurement: Comienza la medicion de la presion // The parameter is the oversampling setting, from 0 to 3 (highest res, longest wait). El parametro sobremuestra la configuracion, de 0 a 3 // Si no hay errores, el numero de ms para esperar se mostrara. // Si hay errores, se mostrara un 0

status = pressure.startPressure(3); if (status != 0) { // Espere a que termine la medicion de la presion delay(status);

// Recupere la medicion completa de la presion // Notese que la medida esta almacenada en la variable P // Use '&P' to provide the address of P. Utilice &P para dar la direccion de P // Notese tambien que la funcion requiere una medida previa de temperatura // (Si la temperatura es estable, puedes hacer una medicion de temperatura para las medidas de presion) // Si la ffuncion muestra 1 no hay errores, de lo contrario marcara 0

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"); }