Temperature and Pressure logger.
Dependencies: BMP180 N5110 PowerControl beep mbed
main.h
- Committer:
- takis94
- Date:
- 2015-05-02
- Revision:
- 0:ec64ecaac130
- Child:
- 1:d320c79324fe
File content as of revision 0:ec64ecaac130:
/** @file main.h @brief Header file containing functions prototypes, defines and global variables. @brief Doxygen documentation. @brief Wheather Station. @author Panayiotis Rodosthenous @date March 2015 */ #ifndef MAIN_H #define MAIN_H #define PI 3.14159265359 #include "mbed.h" #include "N5110.h" #include "BMP180.h" #include "PowerControl/PowerControl.h" #include "PowerControl/EthernetPowerControl.h" #include "beep.h" /** @namespace bmp180 @brief Assign sensor pins to the mbed */ BMP180 bmp180(p28,p27); // SDA, SCL /** @namespace serial @brief Serial connection for presenting data to pc */ Serial serial(USBTX,USBRX); //tx,rx /** @namespace pc @brief Serial connection for presenting data to serial */ Serial pc(USBTX,USBRX); //tx,rx /** @namespace lcd @brief Assign the LCD pins to the mbed */ N5110 lcd(p7,p8,p9,p10,p11,p13,p26); ///VCC,SCE,RST,D/C,MOSI,SCLK,LED /** @namespace local @brief Location to create a file for data logging */ LocalFileSystem local("local"); /** @namespace buzzer @brief GPIO output for warning buzzer */ Beep buzzer(p21); /** @namespace button4 @brief GPIO input for main screen button */ DigitalIn button4(p19); /** @namespace button @brief ISR input for temperature graph button */ InterruptIn button(p18); /** @namespace button2 @brief ISR input for pressure graph button */ InterruptIn button2(p17); /** @namespace button3 @brief ISR input for changing the units button */ InterruptIn button3(p16); /** @namespace switch_logging @brief GPIO input for data logging switch */ DigitalIn switch_logging(p15); /** @namespace ain @brief GPIO analogue input for brightness potentiometer */ AnalogIn ain(p20); /** @namespace green @brief GPIO output for status green LED */ DigitalOut green(p25); /** @namespace red @brief GPIO output for status red LED */ DigitalOut red(p24); /** @namespace leds @brief Bus output for status on-board LED */ BusOut leds(LED4,LED3,LED2,LED1); //bus for on-board LEDs /** @namespace timerReading @brief Ticker for reading the sensor */ Ticker timerReading; /** @namespace timer @brief Ticker for getting current time */ Ticker timer; /** @namespace timerFiles @brief Ticker for writing data to file */ Ticker timerFiles; /** @namespace timerClearScreen @brief Ticker for clearing the LCD */ Ticker timerClearScreen; int readingFlag = 0; /*!< reading flag set in ISR */ int timerFlag = 0; /*!< timer flag set in ISR */ int timerFilesFlag = 0; /*!< timerFiles flag set in ISR */ int setTimeFlag = 0; /*!< setTime flag set in ISR */ int graphTempFlag = 0; /*!< graphTemp flag set in ISR */ int graphPresFlag = 0; /*!< graphPres flag set in ISR */ int unitsFlag = 0; /*!< units flag set in ISR */ int clearFlag = 0; /*!< celar flag set in ISR */ int i = 0; /*!< variable i used as index in print() */ char rxString[16]; /*!< string used to transfer current time into the buffer */ char bufferT[14]; /*!< buffer used to store current time */ char bufferD[14]; /*!< buffer used to store current date */ float temperature; /*!< variable used to store current temperature */ float pressure; /*!< variable used to store current pressure */ float array[84]; /*!< array used to store temperature readings */ float array2[84]; /*!< array used to store pressure readings */ /** Update * * Prints and updates the thermometer presented on the main screen. * For each specified range of temperatures adds or removes pixels from inside the thermometer. * Introduces a live update on the main screen. */ void update(); /** Print * * Prints the different screens on the LCD. * According to the buttons status-flags, a different screen is presented. Buttons are used as interrupts. * Includes the update() function. * -Button 1: Print the temperature graph with the average temperature and weather prediction. Disables button 2. * -Button 2: Print the pressure graph with the average pressure and weather prediction. Disables button 1. * -Button 3: Converts the temperature and pressure units on the main screen. When one of buttons 1 or 2 is previously pressed, it removes the average and weather predictions from screen. * -No button pressed: Displays the main screen. */ void print(); /** Write Data to File * * Logs the time, temperature and pressure on a .csv file on the mbed Flash memory. * It called when the logging switch is ON. * A ticker is used to call this function. Logs data every 10 sec. * @param time - the current time taken from setTime() function. * @param temperature - the current temperature read from sensor. * @param temperature - the current tpressure read from sensor. * @returns * log.csv - file with parameters in comma separated format stored on mbed. */ void writeDataToFile(float tempereture,char* time,float pressure); /** Serial ISR * * This is an ISR function, called when serial data is received. * Gets the time rxString. */ void serialISR(); /** Set Time * * This function sets the UNIX time. * Updates the time, bu converting the time string into an integer value. */ void setTime(); /** Timer Expired Reading * * This function sets the reading flag high when called. * Attached to the timerReading ticker. */ void timerExpiredReading(); /** Timer Expired Time * * This function sets the timer flag high when called. * Attached to the timer ticker. */ void timerExpiredTime(); /** Timer Expired Files * * This function sets the timerFiles flag high when called. * Attached to the timerFiles ticker. */ void timeExpiredFiles(); /** Timer Expired Clear * * This function sets the clear flag high when called. * Attached to the clearScreen ticker. */ void timerExpiredClear(); /** Button for Temperature Pressed * * This function toggles the graphTemp flag when button is pressed. * Attached to the button interrupt configuration. */ void buttonTempPressed(); /** Button for Pressure Pressed * * This function toggles the graphPres flag when button2 is pressed. * Attached to the button2 interrupt configuration. */ void buttonPresPressed(); /** Button for Units Pressed * * This function toggles the units flag when button3 is pressed. * Attached to the button3 interrupt configuration. */ void buttonUnitsPressed(); #endif