Arduino Barometer with BMP180
This is a simple barometer with BMP180, a Nokia 5110 display, and an Arduino Mega.
Components and supplies
1
Arduino Mega 2560
Apps and platforms
1
Arduino IDE
Project description
Code
U8GLIB5110LCDBMP180.ino
arduino
A simple sketch to measure barometric pressure.
1 2#include <Wire.h> 3#include <Adafruit_BMP085.h> 4#include "U8glib.h" 5 6Adafruit_BMP085 bmp; 7 8U8GLIB_PCD8544 u8g(8, 4, 7, 5, 6); // CLK=8, DIN=4, CE=7, DC=5, RST=6 9 10float pressure = 0.0; 11float tempC = 0.0; 12float altitude = 0.0; 13void BmpSensorRead(float* pressure, float* tempC, float* altitude); 14void DisplayPresTemp(float* pressure, float* tempC, float* altitude); 15 16void setup(void) 17{ 18 Serial.begin(9600); 19 20 for (int a = 0; a < 30; a++) 21 { 22 u8g.firstPage(); 23 24 do 25 { 26 u8g.setFont(u8g_font_5x8); 27 u8g.setFontRefHeightExtendedText(); 28 u8g.setDefaultForegroundColor(); 29 u8g.setFontPosTop(); 30 u8g.drawStr(4, a, "BMP180 Sensor"); 31 } 32 while (u8g.nextPage()); 33 } 34 35 delay(3000); 36 37 if (!bmp.begin()) 38 { 39 u8g.firstPage(); 40 41 do 42 { 43 u8g.setFont(u8g_font_5x8); 44 u8g.setFontRefHeightExtendedText(); 45 u8g.setDefaultForegroundColor(); 46 u8g.setFontPosTop(); 47 u8g.drawStr(4, 0, "BMP085 Sensor"); 48 u8g.drawStr(4, 20, " ERROR!"); 49 } 50 while (u8g.nextPage()); 51 52 Serial.println("BMP085 sensor, ERROR!"); 53 54 while (1) {} 55 } 56} 57void loop(void) 58{ 59 BmpSensorRead(&pressure, &tempC, &altitude); 60 DisplayPresTemp(&pressure, &tempC, &altitude); 61 delay(1000); 62} 63void DisplayPresTemp(float* pressure, float* tempC, float* altitude) 64{ 65 u8g.firstPage(); 66 67 do 68 { 69 u8g.setFont(u8g_font_6x10); 70 u8g.setFontRefHeightExtendedText(); 71 u8g.setDefaultForegroundColor(); 72 u8g.setFontPosTop(); 73 u8g.drawStr(2, 0, "Pressure"); 74 u8g.setPrintPos(20, 9); 75 u8g.print(*pressure); 76 u8g.drawStr(0, 20, "Temp C"); 77 u8g.setPrintPos(45, 20); 78 u8g.print(*tempC); 79 u8g.drawStr(0, 31, "Altitude"); 80 u8g.setPrintPos( 45, 40); 81 u8g.print(*altitude); 82 } 83 while (u8g.nextPage()); 84} 85void BmpSensorRead(float* pressure, float* tempC, float* altitude) 86{ 87 *tempC = bmp.readTemperature(); 88 Serial.print("Temperature = "); 89 Serial.print(*tempC); 90 Serial.println(" *C"); 91 92 *pressure = bmp.readPressure() / 98.5; 93 Serial.print("Pressure = "); 94 Serial.print(*pressure / 100.0); 95 Serial.println(" hPa"); 96 97 // Calculate altitude assuming 'standard' barometric 98 // pressure of 1013.25 millibar = 101325 Pascal 99 *altitude = bmp.readAltitude(); 100 Serial.print("Altitude = "); 101 Serial.print(*altitude); 102 Serial.println(" meters"); 103} 104
Comments
Only logged in users can leave comments