Mr.Y's program!

Dependencies:   HDC1000 LPS25H TSL2561_I2C mbed

main.cpp

Committer:
tukumotann
Date:
2015-10-08
Revision:
0:b80c6c476e55

File content as of revision 0:b80c6c476e55:

#include "mbed.h" 
#include "HDC1000.h"
#include "TSL2561_I2C.h"
//#include "AQM0802.h" //lcd
#include "LPS25H.h"

//InterruptIn button1(P1_12); //
//DigitalOut led1(LED1); //
//DigitalOut led2(LED2); //
//DigitalOut led3(LED3); //一定以上の回転数の時に光る
DigitalOut flash(LED4); //
HDC1000 hdc1000(P1_1, P1_0); //I2C_0 (sda, scl)
//DigitalOut myled(p5); //
TSL2561_I2C lum_sensor(P1_3, P1_2); //I2C_1 (sda, scl)
//DigitalOut myled(p5);
LPS25H lps25h(P1_7, P1_6); //I2C_3 (sda, scl)
Serial gps(P2_14, P2_15); //UART_0 (TxD, RxD)
Ticker flipper;
Serial pc(USBTX, USBRX); //USB_microB

/*
int i=0;
float f=0;
void rise1() {
    led1 = !led1;
}
void fall1() {
    led1 = !led1;
    i = i++;
}
void flip() {
    f=i;
    pc.printf("%2.1f \n",f/10);
    if(f>3)  {
        led3=1;
    }
    else{
        led3=0;
    }
    i=0;
    f=0;
}
*/

#define T0  288.15
#define dT  0.0065
#define P0  101325.0
#define g   9.80665
#define R   287.052
double GetAltitude(double p, double t){
    return (t+273.15)/dT*(pow((P0/p),dT*R/g)-1);
}

int main(){

/*
    button1.rise(&rise1); 
    button1.fall(&fall1);
    flipper.attach(&flip, 10); 
*/

    char msg[10];
    float h;
    float t;
    int a=0;
    int b=0;
    int c=0;
    int d=0;  
    int i=0;

    lum_sensor.enablePower();
    int rgb_readings[4];
    int e=0;   
    int m=0;
    int o=0;
    int k=0;
    int j=1;

    char msg2[10];
    int p, u, l;
    sprintf(msg2,"Barometer\r\n");
    pc.printf(msg2);
    sprintf(msg2,"Altimeter\r\n");
    pc.printf(msg2);
    //wait(1); //

    pc.printf("gps start! \r\n"); 

    while(1) {
        
        flash = !flash;
        //wait(0.25);
        
        for  (i=0;i<5;i++) {
            h = hdc1000.humidity();
            h = h/0x10000*100;
            sprintf(msg,"%4.1f%% \r\n",h);
            //lcd.locate(0,0);
            pc.printf(msg);
            t = hdc1000.temperature();
            t = t/0x10000*165-40;
            sprintf(msg,"%4.1fC \r\n",t);
            //lcd.locate(0,1);
            pc.printf(msg);
            a=h-d;
            d=b/c;  
            b+=h;
            c++;
/*
            if(a>=1.5){
                myled=1;
            }
            else{
                if(a<=-1.5){
                    myled=1;
                }
            else{
                myled=0;
            }
*/
        }    
        //wait(1);
        
//        for (j=1; j<5; j++){
            printf( "Luminosity: %4.2f\r\n", lum_sensor.getLux() );
//            wait_ms( 100 );
            e=lum_sensor.getLux() - k;
            k=m/o;
            m+=lum_sensor.getLux();
            o++;
/*
            if(e>=1.5){
                myled=1;
            }
            else{
                if(e<=-1.5){
                    myled=1;
                }
                else{
                myled=0;
               }
            }
*/
//        }
        
        p = (double)lps25h.pressure()/40.96;
        u = 42.5 + (double)lps25h.temperature()/480.0;
        l = GetAltitude(p,u);
        sprintf(msg2,"%6dPa\r\n",p);
        // lcd.locate(0,0);
        pc.printf(msg2);
        sprintf(msg2,"%4dm%2dC\r\n", l, u);
        // lcd.locate(0,1);
        pc.printf(msg2);
        // wait(1);
        
        pc.putc(gps.getc());     //パソコンに文字を送る
    }
}