by L.F

Dependencies:   ADXL345 DHT HMC5883L SerialGPS mbed

main.cpp

Committer:
fadi_lad
Date:
2017-01-03
Revision:
1:5e89c2fd0d7f
Parent:
0:9bd930408c8c

File content as of revision 1:5e89c2fd0d7f:

#include "mbed.h"
#include "HMC5883L.h"
#include "DHT.h"
#include "ADXL345.h"
#include "SerialGPS.h"

SerialGPS gps(D1, D0);
DHT sensor(D7, DHT22);
Serial pc(D8, PA_10); // tx, rx 
 // Utility Boussole HMC5883L
#ifndef M_PI
#define M_PI 3.1415926535897932384626433832795
#endif
#define PI2         (2*M_PI)
#define RAD_TO_DEG  (180.0/M_PI)
#define DEG_TO_RAD  (M_PI/180.0)
#define  DECLINATION_ANGLE -0.02123
#define SDA      A4
#define SCL      A5
 
int main()
{   
    // varible Boussole HMC5883L  
    double heading;  
    float x, y, z;
    HMC5883L hmc5883l(SDA, SCL);
    // variable DHT11 ///////////////////////////
    float  temp,Humidity;
    int err;
    // configuration GPS //////////////////////////////////////////
    SerialGPS::gps_gga_t *p;
    int    Hour, Min, Sec, Pos, Sat;
    double Latitude, Longitude;

    while(1) 
    { 
////////////////////////////////////////////////////////////////////////////////
////////////////////////// aquisation de la boussole ///////////////////////////
////////////////////////////////////////////////////////////////////////////////
        x = hmc5883l.getMx();
        y = hmc5883l.getMy();
        z = hmc5883l.getMz();     
        pc.printf("x, y, z: %f, %f,%f \r\n",x,y,z);
        heading = atan2(static_cast<double>(y), static_cast<double>(x)); // heading = arctan(Y/X)
        heading += DECLINATION_ANGLE; 
        if(heading < 0.0) // fix sign
            heading += PI2;
        if(heading > PI2) // fix overflow
            heading -= PI2; 
        pc.printf("heading:%f\r\n",heading);
        pc.printf("*********************\r\n");           
////////////////////////////////////////////////////////////////////////////////
////////////////////////// aquisation du capteur de température/////////////////
////////////////////////////////////////////////////////////////////////////////
        err = sensor.readData();
        if (err==0){
            temp=sensor.ReadTemperature(CELCIUS);
            Humidity=sensor.ReadHumidity();
            pc.printf(" temp / hem =%f, %f\r\n",temp,Humidity);  
       }
        pc.printf("*********************\r\n");           
////////////////////////////////////////////////////////////////////////////////
////////////////////////// aquisation gps ////////////:::::::::::::::///////////
////////////////////////////////////////////////////////////////////////////////
         gps.processing();
         Hour= p->hour;
         Min = p->min;
         Sec = p->sec;
         Pos = p->position_fix;
         Sat = p->satellites_used;
         Latitude = p->latitude;
         Longitude= p->longitude;  
         pc.printf("gps= %d, %d \r\n",Latitude,Longitude);
         pc.printf("hour= %i \r\n",Hour);
         pc.printf("min= %i \r\n",Sec);
         pc.printf("position_fix= %i \r\n",Pos);
         pc.printf("*********************\r\n");           
    
        wait(10); 
    }  
}