Program to display temperature and pressure readings along with date and time.

Dependencies:   BMP180 N5110 PowerControl mbed

Revision:
0:c2a88630fb72
Child:
1:026d80a2f7a9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Apr 29 13:59:21 2015 +0000
@@ -0,0 +1,111 @@
+#include "mbed.h"
+#include "N5110.h"
+#include "BMP180.h"
+
+//    VCC,SCE,RST,D/C,MOSI,SCLK,LED
+N5110 lcd(p7,p8,p9,p10,p11,p13,p26);
+// Can also power (VCC) directly from VOUT (3.3 V) -
+// Can give better performance due to current limitation from GPIO pin
+
+Ticker timer ; //create a ticker object to read the data from the sensor
+Timeout timeOut ; 
+BMP180 bmp180(p28,p27);
+Serial serial(USBTX,USBRX);
+AnalogIn POT(p20);
+
+int timerFlag= 0;
+int timeOutFlag = 0 ;
+int temperature ;
+float pressure;
+
+
+void screen()
+{
+    lcd.printString("Weather Logger",0,2);
+    lcd.printString("3000",32,3);
+    lcd.printString("Alex Raper",15,5);
+    lcd.refresh();
+}
+
+void menu()
+{
+    if (POT<(1.0/2.0)) {
+        lcd.printString("Temperature",15,3);
+        lcd.printString(">",76,3);
+        lcd.printString("Graph",6,6);
+        lcd.printString("Current",42,6);
+
+    } else {
+        lcd.printString("Pressure",18,3);
+        lcd.printString("<",2,3);
+        lcd.printString("Graph",6,6);
+        lcd.printString("Current",42,6);
+
+    }
+}
+
+void timerExpired(){
+    timerFlag = 1 ;
+}
+
+void timeOutStopped(){
+    
+    timeOutFlag = 1;
+    }
+
+void recieveData()
+{
+
+    Measurement measurement;  // measurement structure declared in BMP180 class
+
+    // read values (T in Celsius and P in mb) and print over serial port
+    measurement = bmp180.readValues();
+    serial.printf("T = %.2f C P = %.2f mb\n",measurement.temperature,measurement.pressure);
+
+    temperature = measurement.temperature ;
+    pressure = measurement.pressure ;
+
+}
+
+
+void displayData()
+{
+
+    char buffer[14];  // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
+    // so can display a string of a maximum 14 characters in length
+    // or create formatted strings - ensure they aren't more than 14 characters long
+    int length = sprintf(buffer,"T = %2d C",temperature); // print formatted data to buffer
+    // it is important the format specifier ensures the length will fit in the buffer
+    if (length <= 14)  // if string will fit on display
+        lcd.printString(buffer,0,1);           // display on screen
+    length = sprintf(buffer,"P = %.2f mb",pressure);
+    if (length <= 14)
+        lcd.printString(buffer,0,2);
+
+}
+
+
+
+
+
+int main()
+{
+    // first need to initialise display
+    lcd.init();
+    // initiliase barometer
+    bmp180.init();
+    timer.attach (&timerExpired , 1.0);
+    timeOut.attach (&timeOutStopped , 2.0);
+    screen();
+    while(1) {
+        if (timeOutFlag ==1 ){
+        if (timerFlag ==1){
+            timerFlag = 0;
+        lcd.clear();
+        recieveData();
+        displayData();
+        //  menu();
+        }
+    }
+    }
+}