Sat program

Dependencies:   Adafruit_GFX Adafruit_RTCLib BMP180 L3GD20 LSM303DLHC SHTx mbed

Committer:
oscarvzfz
Date:
Tue May 24 00:01:20 2016 +0000
Revision:
2:b5346ebd1e3c
Parent:
0:07c50519b515
;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
oscarvzfz 0:07c50519b515 1 #include "mbed.h"
oscarvzfz 0:07c50519b515 2 #include "Adafruit_SSD1306.h"
oscarvzfz 0:07c50519b515 3 #include "DS1307.h"
oscarvzfz 0:07c50519b515 4 #include "SHTx/sht15.hpp"
oscarvzfz 0:07c50519b515 5 #include "L3GD20.h"
oscarvzfz 0:07c50519b515 6 #include "LSM303DLHC.h"
oscarvzfz 0:07c50519b515 7 #include "BMP180.h"
oscarvzfz 0:07c50519b515 8 #include "MS5803.h"
oscarvzfz 0:07c50519b515 9
oscarvzfz 0:07c50519b515 10 I2C myI2C(p9,p10);
oscarvzfz 0:07c50519b515 11 Adafruit_SSD1306_I2c o(myI2C,D13,0x7A,64,128);
oscarvzfz 0:07c50519b515 12 Serial pc(USBTX,USBRX);
oscarvzfz 0:07c50519b515 13
oscarvzfz 0:07c50519b515 14 RtcDs1307 gRtc ( myI2C );
oscarvzfz 0:07c50519b515 15 DateTime dt;
oscarvzfz 0:07c50519b515 16
oscarvzfz 0:07c50519b515 17 SHTx::SHT15 sensor(p22, p21);
oscarvzfz 0:07c50519b515 18
oscarvzfz 0:07c50519b515 19 L3GD20 gyro(p9, p10);
oscarvzfz 0:07c50519b515 20 LSM303DLHC compass(p9, p10);
oscarvzfz 0:07c50519b515 21 float ax, ay, az;
oscarvzfz 0:07c50519b515 22 float mx, my, mz;
oscarvzfz 0:07c50519b515 23 float gx, gy, gz;
oscarvzfz 0:07c50519b515 24 double yaw,pitch,roll;
oscarvzfz 0:07c50519b515 25 #define M_PI 3.14159265358979323846
oscarvzfz 0:07c50519b515 26
oscarvzfz 0:07c50519b515 27 BMP180 bmp180(&myI2C);
oscarvzfz 0:07c50519b515 28 int press;
oscarvzfz 0:07c50519b515 29 float temp;
oscarvzfz 0:07c50519b515 30
oscarvzfz 0:07c50519b515 31 AnalogIn uv(p20);
oscarvzfz 0:07c50519b515 32 float uv_rad=0;
oscarvzfz 2:b5346ebd1e3c 33 DigitalOut gato(p25);
oscarvzfz 2:b5346ebd1e3c 34 DigitalOut reset(p26);
oscarvzfz 0:07c50519b515 35 MS5803 press_sensor( p9, p10, 0x76);
oscarvzfz 0:07c50519b515 36
oscarvzfz 0:07c50519b515 37
oscarvzfz 0:07c50519b515 38 int main(){
oscarvzfz 2:b5346ebd1e3c 39
oscarvzfz 0:07c50519b515 40 sensor.setOTPReload(false);
oscarvzfz 0:07c50519b515 41 sensor.setResolution(true);
oscarvzfz 0:07c50519b515 42
oscarvzfz 0:07c50519b515 43
oscarvzfz 0:07c50519b515 44
oscarvzfz 0:07c50519b515 45
oscarvzfz 0:07c50519b515 46 while(1)
oscarvzfz 0:07c50519b515 47 { bmp180.init();
oscarvzfz 0:07c50519b515 48 compass.read(&ax, &ay, &az, &mx, &my, &mz);
oscarvzfz 0:07c50519b515 49 gyro.read(&gx, &gy, &gz);
oscarvzfz 0:07c50519b515 50 roll=atan2(ay, az);
oscarvzfz 0:07c50519b515 51 pitch=atan((-ax)/(ay*sin(roll)+az*cos(roll)));
oscarvzfz 0:07c50519b515 52 yaw=atan2(mz*sin(roll)-my*cos(roll),mx*cos(pitch)+my*sin(pitch)*sin(roll)+mz*sin(pitch)*cos(roll));
oscarvzfz 2:b5346ebd1e3c 53 // printf("acc: %.4f %.4f %.4f mag: %.4f %.4f %.4f gir: %.4f %.4f %.4f\n\r",ax,ay,az,mx,my,mz,gx,gy,gz);
oscarvzfz 0:07c50519b515 54
oscarvzfz 0:07c50519b515 55 press_sensor.Barometer_MS5803();
oscarvzfz 0:07c50519b515 56 bmp180.startTemperature();
oscarvzfz 0:07c50519b515 57 wait_ms(5); // Wait for conversion to complete
oscarvzfz 0:07c50519b515 58 if(bmp180.getTemperature(&temp) != 0) {
oscarvzfz 0:07c50519b515 59 printf("Error getting temperature\n");
oscarvzfz 2:b5346ebd1e3c 60 continue;
oscarvzfz 2:b5346ebd1e3c 61 }
oscarvzfz 2:b5346ebd1e3c 62 bmp180.startPressure(BMP180::ULTRA_LOW_POWER);
oscarvzfz 0:07c50519b515 63 wait_ms(10); // Wait for conversion to complete
oscarvzfz 0:07c50519b515 64 if(bmp180.getPressure(&press) != 0) {
oscarvzfz 2:b5346ebd1e3c 65 printf("Error getting pressure\n");
oscarvzfz 2:b5346ebd1e3c 66 continue;
oscarvzfz 0:07c50519b515 67 }
oscarvzfz 0:07c50519b515 68
oscarvzfz 0:07c50519b515 69 uv_rad=((uv.read()*3.3)-1)/0.125;
oscarvzfz 0:07c50519b515 70
oscarvzfz 0:07c50519b515 71 sensor.update();
oscarvzfz 0:07c50519b515 72 dt = gRtc.now();
oscarvzfz 0:07c50519b515 73 o.setTextCursor(0,0);
oscarvzfz 0:07c50519b515 74 o.clearDisplay();
oscarvzfz 0:07c50519b515 75 o.printf("%u/%u/%02u %2u:%02u:%02u\n\r",dt.month(),dt.day(),dt.year(),(dt.hour()-6),dt.minute(),dt.second());
oscarvzfz 2:b5346ebd1e3c 76 o.printf("Temperatura: %3.1f\r\n", sensor.getTemperature());
oscarvzfz 0:07c50519b515 77 o.printf("Humedad: %3.2f %%\r\n", sensor.getHumidity());
oscarvzfz 0:07c50519b515 78 o.printf("P=%d Pa\n\rT=%.2fC\n\r", press, temp);
oscarvzfz 0:07c50519b515 79 o.printf("r:%.1fp:%.1fy:%.1f\n\r",roll*180/M_PI,pitch*180/M_PI,yaw*180/M_PI);
oscarvzfz 0:07c50519b515 80 o.printf("UV=%.3fmW/cm^2\n\r",uv_rad);
oscarvzfz 0:07c50519b515 81 o.printf("P=%.0fPa T=%.2fC\r\n", press_sensor.MS5803_Pressure()*100,press_sensor.MS5803_Temperature());
oscarvzfz 2:b5346ebd1e3c 82 //o.fillCircle(125,61,2,1);
oscarvzfz 2:b5346ebd1e3c 83 //o.drawCircle(118,61,2,1);
oscarvzfz 2:b5346ebd1e3c 84 //o.fillCircle(111,61,2,1);
oscarvzfz 2:b5346ebd1e3c 85 //o.drawCircle(104,61,2,1);
oscarvzfz 2:b5346ebd1e3c 86 //o.fillCircle(97,61,2,1);
oscarvzfz 0:07c50519b515 87 o.display();
oscarvzfz 0:07c50519b515 88
oscarvzfz 0:07c50519b515 89 }
oscarvzfz 0:07c50519b515 90
oscarvzfz 0:07c50519b515 91
oscarvzfz 0:07c50519b515 92
oscarvzfz 0:07c50519b515 93
oscarvzfz 0:07c50519b515 94
oscarvzfz 0:07c50519b515 95
oscarvzfz 0:07c50519b515 96
oscarvzfz 0:07c50519b515 97
oscarvzfz 0:07c50519b515 98
oscarvzfz 0:07c50519b515 99
oscarvzfz 0:07c50519b515 100
oscarvzfz 0:07c50519b515 101 }