Introduction: Lectura BMP180 Con El Display En Arduino 1
Este montaje en conjunto con el código sirve para medir la temperatura en grados Celsius y presión atmosférica en milibares para mostrarla en el display de Arduino 1.
Step 1: Materiales
-20 cables
-1 potenciometro
-Display QY-1602A
-Sensor de temperatura y presión BMP180
-Arduino 1
-Protoboard
Step 2: Montaje
Para hacer el montaje es mas facil fusionar el montaje de el BMP180 con el del LCD. La descripción de ambos esta en la parte superior en las imágenes, junto con el montaje final. Para unirlos no hay necesidad de modificar nada, solo que el BMP180 se conecta a 3 voltios y no a 5 porque el lcd va a estar usando esa conexión.
Step 3: Código
El código para usar el BMP180 con el display es una combinación del código "Hello World" para usar el display y el código para leer y mostrar en el puerto serial, la temperatura y la presión con el BMP180. Para fusionar estos códigos se entrelazan todos los voids y se cambian los serial.print por lcd.print para que la informaron leída con el BMP180 se muestre en el display y no en el puerto serial. Antes de correr este código debes tener en cuenta que debes tener la librería para el BMP180 . Esta librería la puedes encontrar aquí:
-Para el BMP - https://learn.sparkfun.com/tutorials/bmp180-barom...
El código modificado es:
#include <LiquidCrystal.h>
#include <SFE_BMP180 pressure>
#include<Wire.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
SFE_BMP180 pressure;
double PresionBase;
double Presion = 0;
double Altura = 0;
double Temperatura = 0;
char status;
void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
SensorStart();
}
void loop() {
lcd.setCursor(0, 1);
ReadSensor();
lcd.print("Temperatura: ");
lcd.print(Temperatura);
lcd.println(" grados C");
lcd.print("Presion: ");
lcd.print(Presion);
lcd.println(" milibares");
delay(1000);
}
void SensorStart() {
if (pressure.begin())
Serial.println("BMP180 init success");
else
{
Serial.println("BMP180 init fail (disconnected?)\n\n");
while (1);
}
status = pressure.startTemperature();
if (status != 0) {
delay(status);
status = pressure.getTemperature(Temperatura);
if (status != 0) {
status = pressure.startPressure(3);
if (status != 0) {
delay(status);
status = pressure.getPressure(PresionBase, Temperatura);
}
}
}
}
void ReadSensor() {
status = pressure.startTemperature();
if (status != 0)
{
delay(status);
status = pressure.getTemperature(Temperatura);
if (status != 0)
{
status = pressure.startPressure(3);
if (status != 0)
{
delay(status);
status = pressure.getPressure(Presion, Temperatura);
if (status != 0)
{
}
else Serial.println("error en la lectura de presion\n");
}
else Serial.println("error iniciando la lectura de presion\n");
}
else Serial.println("error en la lectura de temperatura\n");
}
else Serial.println("error iniciando la lectura de temperatura\n");
}