Version 5

Dependencies:   BMP280 TextLCD BME280

LCD.hpp

Committer:
O_Thom
Date:
2018-11-29
Revision:
6:b7f6e0c0f646
Parent:
5:f87129ac8bf3
Child:
9:f5eae5211225

File content as of revision 6:b7f6e0c0f646:

#ifndef _LCD_
#define _LCD_
#include "mbed.h"
#include "messageStruct.hpp"
#include "sample_hardware.hpp"
class LCD_Data
    {
     private:  //private variables can only be changed via functions in this function
         float temp;       //current temperature of sensor, updated every 15 seconds
         float pressure;  //current pressure of sensor, updated every 15 seconds
         float fLDR;      //current light level from LDR, updated every 15 seconds
         int flip;
         
         void update_temp(double t) //use this function to update the current temperature value
            {
                temp = t;
            } 
        void update_pressure(double p) //use this function to update the current pressure value
            {
                pressure = p;    
            } 
        void update_LDR(double L)
            {
                fLDR = L;   
            }
    
    public:
    EventQueue LCD_Queue;  //create an event queue for main
    LCD_Data(){ //constructor, initializes the FLIP variable for use in toggling the bottom line of the LCD
        flip = 1;
        temp = 0;
        pressure = 0; 
        fLDR = 0;
    }   
    void update_sensor_info(sample_message msg) //updates all current sensor information, this is called by a ticker every 5 seconds to read from the mailbox
    {
         update_temp(msg.temp);    // Include message class passing of data
         update_pressure(msg.pressure);
         update_LDR(msg.ldr);
    }
    void display_LCD() //updates the current LCD display with the new sensor information
        {
         lcd.cls(); //clear current LCD display
         lcd.printf("%4.2fC", temp); //print temperature to the top line of LCD, 2dp celcius
         switch(flip){
         case 1: 
            lcd.printf("\n%4.2f mbar", pressure); //print pressure to bottom line of LCD, 2dp mbar
            flip = 2;
            break;  
         case 2:
             lcd.printf("\n%4.2f Lux", fLDR); //print pressure to bottom line of LCD, 2dp mbar
             flip = 1;   
            break;           
        default: 
            printf("Error in LCD flip function");
            break;
         }
       } 
    }; 
// Define the member object for the LCD
LCD_Data m_oDisplay;
#endif