Syggestions

Dependencies:   CheckRTC LPS25H hts221

Fork of ELEC350-extended-referral2 by satbir panesar

main.cpp

Committer:
spanesar
Date:
2017-11-15
Revision:
39:504f5dc30a33
Parent:
38:10aadcc9a2dd
Child:
40:426cd176ce80

File content as of revision 39:504f5dc30a33:

#include "mbed.h"
#include "rtos.h"
#include "hts221.h"
#include "LPS25H.h"
//#include "CheckRTC.h"


DigitalOut myled(LED1);
I2C i2c2(I2C_SDA, I2C_SCL);
Serial pc(USBTX, USBRX);
float tempCelsius = 25.50;
float humi = 55;
int humiMax = 100;
char cmd=0;
uint32_t seconds = 0, minutes=0, hours=0;
Ticker t;
volatile static unsigned short sample16 = 0;
void doSample1Hz();
int count = 0;
char *buf;
size_t sz;


LPS25H barometer(i2c2, LPS25H_V_CHIP_ADDR);
HTS221 humidity(I2C_SDA, I2C_SCL);






int main()
{
    pc.baud(9600); //sets baud rate to 9600
    time_t seconds = time(NULL);
    char time [32];
    char date [32];
    strftime(time, 32, "%H:%M:%S %p", localtime(&seconds));
    strftime(date, 32, "%Y/%m/%d %a", localtime(&seconds));
    humidity.init();
    humidity.calib();
    //t.attach(doSample1Hz, 1.0);
    printf("press T to set time and date \n\r");
    printf("press S to start sampling\n\r");
    printf("press D to delete sensor data\n\r");
    printf("Press A to read all sensor data\n\r");
    printf("Press R to read sensor data in memory\n\r");





    while(1) {

        cmd=NULL;
        while(cmd==NULL) {
            cmd=getchar();
        }
        if(cmd=='?') {
            printf("SOFT253 simple Temperature Humidity and Pressure Sensor Monitor\n\r");
            printf("Using the X-NUCLEO-IKS01A1 shield and MBED Libraries\n\r");
        }
/*--------------If 'A' is pressed then all sensor data is diplayed---------------------*/
        if(cmd=='A') {
            humidity.ReadTempHumi(&tempCelsius, &humi); // reads temperature and humity levels
            barometer.get(); // gets barometer readings
            // displays all the variables of time, date, temperature, humidity and all the barometric readings to the serial
            printf("%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
            myled = 1; // LED is ON
            Thread::wait(200); // 200 ms NB 'Thread::wait(int d);' !!! d is in milliseconds!
            myled = 0; // LED is OFF
            Thread::wait(100); // 100 ms
        }
 /*-------------- if 'T' is pressed then the time and date are set to the UTC below------------------------*/       
        if(cmd=='T') {
            set_time(1508268288);
            printf("time and date updated to %s %s\n\r", time, date);
            myled = 1;
            Thread::wait(200);
            myled = 0;
            Thread::wait(100);
        }
/*-------------if 's' is pressed, 5 sample of data are taken and stored to the RAM every second-------------------------*/
        if(cmd=='S') {
            for (count = 0; count < 5; count++){
            sz = snprintf(NULL, 0,"%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
            buf = (char *)malloc(sz + 1);
            snprintf(buf, sz + 1, "%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
            printf("%s\n\r",buf);
            printf("written to memory\n\r");
            myled = 1;
            Thread::wait(200);
            myled = 0;
            Thread::wait(100);
            wait(1);
            }
        if(cmd=='R'){
            printf("%s\n\r", buf);
            myled = 1;
            Thread::wait(200);
            myled = 0;
            Thread::wait (100);
            }    
        }
    }

}
void doSample1Hz()
{
   //sz = snprintf(NULL, 0,"%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
   //buf = (char *)malloc(sz + 1);
   //snprintf(buf, sz + 1, "%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());

}