Sat program
Dependencies: Adafruit_GFX Adafruit_RTCLib BMP180 L3GD20 LSM303DLHC SHTx mbed
main.cpp@0:07c50519b515, 2015-11-09 (annotated)
- Committer:
- oscarvzfz
- Date:
- Mon Nov 09 18:22:43 2015 +0000
- Revision:
- 0:07c50519b515
- Child:
- 1:526ac0828b77
- Child:
- 2:b5346ebd1e3c
blabla
Who changed what in which revision?
User | Revision | Line number | New 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 | 0:07c50519b515 | 33 | |
oscarvzfz | 0:07c50519b515 | 34 | MS5803 press_sensor( p9, p10, 0x76); |
oscarvzfz | 0:07c50519b515 | 35 | |
oscarvzfz | 0:07c50519b515 | 36 | |
oscarvzfz | 0:07c50519b515 | 37 | int main(){ |
oscarvzfz | 0:07c50519b515 | 38 | |
oscarvzfz | 0:07c50519b515 | 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 | 0:07c50519b515 | 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 | 0:07c50519b515 | 60 | continue; |
oscarvzfz | 0:07c50519b515 | 61 | } |
oscarvzfz | 0:07c50519b515 | 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 | 0:07c50519b515 | 65 | printf("Error getting pressure\n"); |
oscarvzfz | 0:07c50519b515 | 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 | 0:07c50519b515 | 76 | o.printf("Temperatura: %3.2f C\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 | 0:07c50519b515 | 82 | o.fillCircle(125,61,2,1); |
oscarvzfz | 0:07c50519b515 | 83 | o.drawCircle(118,61,2,1); |
oscarvzfz | 0:07c50519b515 | 84 | o.fillCircle(111,61,2,1); |
oscarvzfz | 0:07c50519b515 | 85 | o.drawCircle(104,61,2,1); |
oscarvzfz | 0:07c50519b515 | 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 | } |