Ahmad Alkaff / Mbed 2 deprecated CS3237

Dependencies:   mbed

Committer:
AhmadAlkaff
Date:
Wed Oct 09 09:41:54 2019 +0000
Revision:
1:e4a32b4163f2
Parent:
0:7b5d37ca532f
Child:
2:17d5a74fc2c4
ECG Only

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AhmadAlkaff 0:7b5d37ca532f 1 #include "mbed.h"
AhmadAlkaff 1:e4a32b4163f2 2 #include "BMP280.h"
AhmadAlkaff 1:e4a32b4163f2 3 #include "LIS2DH.h"
AhmadAlkaff 0:7b5d37ca532f 4 #include "MAX14720.h"
AhmadAlkaff 0:7b5d37ca532f 5 #include "MAX30001.h"
AhmadAlkaff 1:e4a32b4163f2 6 #include "MAX30101.h"
AhmadAlkaff 1:e4a32b4163f2 7 #include "MAX30205.h"
AhmadAlkaff 0:7b5d37ca532f 8 #include "System.h"
AhmadAlkaff 0:7b5d37ca532f 9 #include "USBSerial.h"
AhmadAlkaff 0:7b5d37ca532f 10
AhmadAlkaff 0:7b5d37ca532f 11 /************************************************************************************************************************************/
AhmadAlkaff 0:7b5d37ca532f 12 // define the HVOUT Boost Voltage default for the MAX14720 PMIC
AhmadAlkaff 0:7b5d37ca532f 13 #define HVOUT_VOLTAGE 4500 // set to 4500 mV
AhmadAlkaff 0:7b5d37ca532f 14
AhmadAlkaff 0:7b5d37ca532f 15 // define all I2C addresses
AhmadAlkaff 0:7b5d37ca532f 16 #define LIS2DH_I2C_SLAVE_ADDR (0x32)
AhmadAlkaff 0:7b5d37ca532f 17 #define MAX14720_I2C_SLAVE_ADDR (0x54)
AhmadAlkaff 0:7b5d37ca532f 18 #define MAX30101_I2C_SLAVE_ADDR (0xAE)
AhmadAlkaff 1:e4a32b4163f2 19 #define MAX30205_I2C_SLAVE_ADDR_BOTTOM (0x90)
AhmadAlkaff 1:e4a32b4163f2 20 #define MAX30205_I2C_SLAVE_ADDR_TOP (0x92)
AhmadAlkaff 1:e4a32b4163f2 21 #define BMP280_I2C_SLAVE_ADDR (0xEC)
AhmadAlkaff 0:7b5d37ca532f 22
AhmadAlkaff 0:7b5d37ca532f 23 // Settings for ECG Initialization
AhmadAlkaff 0:7b5d37ca532f 24 #define En_ecg 0x01
AhmadAlkaff 0:7b5d37ca532f 25 #define Openp 0x00
AhmadAlkaff 0:7b5d37ca532f 26 #define Openn 0x00
AhmadAlkaff 0:7b5d37ca532f 27 #define Pol 0x00
AhmadAlkaff 0:7b5d37ca532f 28 #define Calp_sel 0x00
AhmadAlkaff 0:7b5d37ca532f 29 #define Caln_sel 0x00
AhmadAlkaff 0:7b5d37ca532f 30 #define E_fit 0x0F
AhmadAlkaff 0:7b5d37ca532f 31 #define Rate 0x02
AhmadAlkaff 0:7b5d37ca532f 32 #define Gain 0x00
AhmadAlkaff 0:7b5d37ca532f 33 #define Dhpf 0x01
AhmadAlkaff 0:7b5d37ca532f 34 #define Dlpf 0x01
AhmadAlkaff 0:7b5d37ca532f 35
AhmadAlkaff 0:7b5d37ca532f 36 // Settings for ECG RtoR
AhmadAlkaff 0:7b5d37ca532f 37 #define En_rtor 0x01
AhmadAlkaff 0:7b5d37ca532f 38 #define Wndw 0x03
AhmadAlkaff 0:7b5d37ca532f 39 #define Gain1 0x0f
AhmadAlkaff 0:7b5d37ca532f 40 #define Pavg 0x02
AhmadAlkaff 0:7b5d37ca532f 41 #define Ptsf 0x03
AhmadAlkaff 0:7b5d37ca532f 42 #define Hoff 0x20
AhmadAlkaff 0:7b5d37ca532f 43 #define Ravg 0x02
AhmadAlkaff 0:7b5d37ca532f 44 #define Rhsf 0x04
AhmadAlkaff 0:7b5d37ca532f 45 #define Clr_rrint 0x01
AhmadAlkaff 0:7b5d37ca532f 46
AhmadAlkaff 0:7b5d37ca532f 47 // Settings for Lead Detection
AhmadAlkaff 0:7b5d37ca532f 48 #define En_dcloff 0x01
AhmadAlkaff 0:7b5d37ca532f 49 #define Ipol 0x00
AhmadAlkaff 0:7b5d37ca532f 50 #define Imag 0x00
AhmadAlkaff 0:7b5d37ca532f 51 #define Vth 0x00
AhmadAlkaff 0:7b5d37ca532f 52
AhmadAlkaff 0:7b5d37ca532f 53 // Settings for the HR initialization
AhmadAlkaff 0:7b5d37ca532f 54 #define FIFO_WATERLEVEL_MARK 15
AhmadAlkaff 0:7b5d37ca532f 55 #define SAMPLE_AVG 2
AhmadAlkaff 0:7b5d37ca532f 56 #define SAMPLE_RATE 1
AhmadAlkaff 0:7b5d37ca532f 57 #define PULSE_WIDTH 2
AhmadAlkaff 0:7b5d37ca532f 58 #define RED_LED_CURRENT 0x1F
AhmadAlkaff 0:7b5d37ca532f 59 #define IR_LED_CURRENT 0X1F
AhmadAlkaff 0:7b5d37ca532f 60
AhmadAlkaff 0:7b5d37ca532f 61 // Define with Maxim VID and a Maxim assigned PID, set to version 0x0001 and non-blocking
AhmadAlkaff 0:7b5d37ca532f 62 USBSerial usbSerial(0x0b6a, 0x0100, 0x0001, false);
AhmadAlkaff 0:7b5d37ca532f 63
AhmadAlkaff 0:7b5d37ca532f 64 // I2C Masters
AhmadAlkaff 0:7b5d37ca532f 65 //I2C i2c1(I2C1_SDA, I2C1_SCL); // used by MAX30205, BMP280
AhmadAlkaff 0:7b5d37ca532f 66 I2C i2c2(I2C2_SDA, I2C2_SCL); // used by MAX14720, MAX30101, LIS2DH
AhmadAlkaff 0:7b5d37ca532f 67
AhmadAlkaff 0:7b5d37ca532f 68 // SPI Master 0 with SPI0_SS for use with MAX30001
AhmadAlkaff 0:7b5d37ca532f 69 SPI spi(SPI0_MOSI, SPI0_MISO, SPI0_SCK, SPI0_SS);
AhmadAlkaff 0:7b5d37ca532f 70
AhmadAlkaff 0:7b5d37ca532f 71 // PMIC
AhmadAlkaff 0:7b5d37ca532f 72 MAX14720 max14720(&i2c2, MAX14720_I2C_SLAVE_ADDR);
AhmadAlkaff 0:7b5d37ca532f 73
AhmadAlkaff 0:7b5d37ca532f 74 // Optical Oximeter
AhmadAlkaff 0:7b5d37ca532f 75 //MAX30101 max30101(&i2c2, MAX30101_I2C_SLAVE_ADDR);
AhmadAlkaff 0:7b5d37ca532f 76 //InterruptIn max30101_Interrupt(P4_0);
AhmadAlkaff 0:7b5d37ca532f 77
AhmadAlkaff 0:7b5d37ca532f 78 // Accelerometer
AhmadAlkaff 1:e4a32b4163f2 79 //LIS2DH lis2dh(&i2c2, LIS2DH_I2C_SLAVE_ADDR);
AhmadAlkaff 1:e4a32b4163f2 80 //InterruptIn lis2dh_Interrupt(P4_7);
AhmadAlkaff 0:7b5d37ca532f 81
AhmadAlkaff 0:7b5d37ca532f 82 // Barometric Pressure Sensor
AhmadAlkaff 0:7b5d37ca532f 83 //BMP280 bmp280_pres(&i2c1, BMP280_I2C_SLAVE_ADDR);
AhmadAlkaff 0:7b5d37ca532f 84
AhmadAlkaff 0:7b5d37ca532f 85 // Top Temperature Sensor
AhmadAlkaff 0:7b5d37ca532f 86 //MAX30205 MAX30205_top(&i2c1, MAX30205_I2C_SLAVE_ADDR_TOP);
AhmadAlkaff 0:7b5d37ca532f 87
AhmadAlkaff 0:7b5d37ca532f 88 // Botttom Temperature Sensor
AhmadAlkaff 0:7b5d37ca532f 89 //MAX30205 MAX30205_bottom(&i2c1, MAX30205_I2C_SLAVE_ADDR_BOTTOM);
AhmadAlkaff 0:7b5d37ca532f 90
AhmadAlkaff 0:7b5d37ca532f 91 // ECG device
AhmadAlkaff 0:7b5d37ca532f 92 MAX30001 max30001(&spi);
AhmadAlkaff 0:7b5d37ca532f 93 InterruptIn max30001_InterruptB(P3_6);
AhmadAlkaff 0:7b5d37ca532f 94 InterruptIn max30001_Interrupt2B(P4_5);
AhmadAlkaff 0:7b5d37ca532f 95
AhmadAlkaff 0:7b5d37ca532f 96 // PWM used as fclk for the MAX30001
AhmadAlkaff 0:7b5d37ca532f 97 PwmOut pwmout(P1_7);
AhmadAlkaff 0:7b5d37ca532f 98
AhmadAlkaff 0:7b5d37ca532f 99 DigitalOut led(LED1);
AhmadAlkaff 0:7b5d37ca532f 100
AhmadAlkaff 0:7b5d37ca532f 101 // Data of sensors
AhmadAlkaff 0:7b5d37ca532f 102 int32_t ECG_Raw, ECG_cumul, SpO_Raw;
AhmadAlkaff 0:7b5d37ca532f 103 double ECG_converted = 0;
AhmadAlkaff 0:7b5d37ca532f 104 uint32_t index = 0;
AhmadAlkaff 0:7b5d37ca532f 105
AhmadAlkaff 0:7b5d37ca532f 106 //Temperature sensor variables
AhmadAlkaff 0:7b5d37ca532f 107 //uint16_t rawTemp_top, rawTemp_bottom;
AhmadAlkaff 0:7b5d37ca532f 108 //float celsius_top, celsius_bottom, fahrenheit_top, fahrenheit_bottom;
AhmadAlkaff 0:7b5d37ca532f 109
AhmadAlkaff 0:7b5d37ca532f 110 // Barometric sensor variables
AhmadAlkaff 0:7b5d37ca532f 111 //char bmp280_rawData = 0;
AhmadAlkaff 0:7b5d37ca532f 112 //float Temp_degC, Press_Pa, Press_Bar;
AhmadAlkaff 0:7b5d37ca532f 113
AhmadAlkaff 0:7b5d37ca532f 114 //write the power down command to PMIC
AhmadAlkaff 0:7b5d37ca532f 115 void turnOff() {
AhmadAlkaff 0:7b5d37ca532f 116 max14720.shutdown();
AhmadAlkaff 0:7b5d37ca532f 117 }
AhmadAlkaff 0:7b5d37ca532f 118
AhmadAlkaff 0:7b5d37ca532f 119 //@brief Creates a packet that will be streamed via USB Serial
AhmadAlkaff 0:7b5d37ca532f 120 //@brief the packet created will be inserted into a fifo to be streamed at a later time
AhmadAlkaff 0:7b5d37ca532f 121 //@param id Streaming ID
AhmadAlkaff 0:7b5d37ca532f 122 //@param buffer Pointer to a uint32 array that contains the data to include in the packet
AhmadAlkaff 0:7b5d37ca532f 123 //@param number Number of elements in the buffer
AhmadAlkaff 0:7b5d37ca532f 124 void StreamPacketUint32_ex(uint32_t id, uint32_t *buffer, uint32_t number) {
AhmadAlkaff 0:7b5d37ca532f 125 int k;
AhmadAlkaff 0:7b5d37ca532f 126
AhmadAlkaff 0:7b5d37ca532f 127 if(id == MAX30001_DATA_ECG) {
AhmadAlkaff 0:7b5d37ca532f 128 for (k = 0; k < number ; k++) {
AhmadAlkaff 0:7b5d37ca532f 129 ECG_Raw = (int32_t)(buffer[k] << 8);
AhmadAlkaff 0:7b5d37ca532f 130 ECG_Raw = ECG_Raw >> 14;
AhmadAlkaff 0:7b5d37ca532f 131 usbSerial.printf("ECG Raw: %d;%d\r\n", index, ECG_Raw);
AhmadAlkaff 0:7b5d37ca532f 132 index++;
AhmadAlkaff 0:7b5d37ca532f 133 }
AhmadAlkaff 0:7b5d37ca532f 134 }
AhmadAlkaff 0:7b5d37ca532f 135
AhmadAlkaff 0:7b5d37ca532f 136 //if(id == MAX30101_OXIMETER_DATA + 2) {
AhmadAlkaff 0:7b5d37ca532f 137 // for (k = 0; k < number; k++)
AhmadAlkaff 0:7b5d37ca532f 138 // SpO_Raw = (int32_t)(buffer[k]);
AhmadAlkaff 0:7b5d37ca532f 139 // usbSerial.printf("SpO Raw: %d\r\n", SpO_Raw);
AhmadAlkaff 0:7b5d37ca532f 140 //}
AhmadAlkaff 0:7b5d37ca532f 141 }
AhmadAlkaff 0:7b5d37ca532f 142
AhmadAlkaff 0:7b5d37ca532f 143 //void MAX30101_OnInterrupt(void){
AhmadAlkaff 0:7b5d37ca532f 144 // I2CM_Init_Reset(2, 1);
AhmadAlkaff 0:7b5d37ca532f 145 //}
AhmadAlkaff 0:7b5d37ca532f 146
AhmadAlkaff 0:7b5d37ca532f 147 int main() {
AhmadAlkaff 0:7b5d37ca532f 148 // hold results for returning functions
AhmadAlkaff 0:7b5d37ca532f 149 int result;
AhmadAlkaff 0:7b5d37ca532f 150
AhmadAlkaff 0:7b5d37ca532f 151 // initialize HVOUT on the MAX14720 PMIC
AhmadAlkaff 0:7b5d37ca532f 152 result = max14720.init();
AhmadAlkaff 0:7b5d37ca532f 153 if (result == MAX14720_ERROR)
AhmadAlkaff 0:7b5d37ca532f 154 printf("Error initializing MAX14720");
AhmadAlkaff 0:7b5d37ca532f 155 max14720.boostEn = MAX14720::BOOST_ENABLED;
AhmadAlkaff 0:7b5d37ca532f 156 max14720.boostSetVoltage(HVOUT_VOLTAGE);
AhmadAlkaff 0:7b5d37ca532f 157
AhmadAlkaff 0:7b5d37ca532f 158 // This is the SpO2 mode (IR&Red LED)
AhmadAlkaff 0:7b5d37ca532f 159 //max30101.SpO2mode_init(FIFO_WATERLEVEL_MARK, SAMPLE_AVG, SAMPLE_RATE, PULSE_WIDTH, RED_LED_CURRENT, IR_LED_CURRENT);
AhmadAlkaff 0:7b5d37ca532f 160
AhmadAlkaff 0:7b5d37ca532f 161 // MAX30101 initialize interrupt
AhmadAlkaff 0:7b5d37ca532f 162 //max30101.onInterrupt(&MAX30101_OnInterrupt);
AhmadAlkaff 0:7b5d37ca532f 163 //max30101.onDataAvailable(&StreamPacketUint32_ex);
AhmadAlkaff 0:7b5d37ca532f 164 //max30101_Interrupt.fall(&MAX30101MidIntHandler);
AhmadAlkaff 1:e4a32b4163f2 165
AhmadAlkaff 0:7b5d37ca532f 166 // Initialise the BMP280
AhmadAlkaff 0:7b5d37ca532f 167 //bmp280_pres.init(BMP280::OVERSAMPLING_X16_P, BMP280::OVERSAMPLING_X2_T, BMP280::FILT_4, BMP280::NORMAL_MODE, BMP280::T_62_5);
AhmadAlkaff 0:7b5d37ca532f 168
AhmadAlkaff 0:7b5d37ca532f 169 // Interrupt priority
AhmadAlkaff 0:7b5d37ca532f 170 NVIC_SetPriority(GPIO_P0_IRQn, 5);
AhmadAlkaff 0:7b5d37ca532f 171 NVIC_SetPriority(GPIO_P1_IRQn, 5);
AhmadAlkaff 0:7b5d37ca532f 172 NVIC_SetPriority(GPIO_P2_IRQn, 5);
AhmadAlkaff 0:7b5d37ca532f 173 NVIC_SetPriority(GPIO_P3_IRQn, 5);
AhmadAlkaff 0:7b5d37ca532f 174 NVIC_SetPriority(GPIO_P4_IRQn, 5);
AhmadAlkaff 0:7b5d37ca532f 175 NVIC_SetPriority(GPIO_P5_IRQn, 5);
AhmadAlkaff 0:7b5d37ca532f 176 NVIC_SetPriority(GPIO_P6_IRQn, 5);
AhmadAlkaff 0:7b5d37ca532f 177 // Used by the MAX30001
AhmadAlkaff 0:7b5d37ca532f 178 NVIC_SetPriority(SPI1_IRQn, 0);
AhmadAlkaff 0:7b5d37ca532f 179
AhmadAlkaff 0:7b5d37ca532f 180 /* ECG Initialize */
AhmadAlkaff 0:7b5d37ca532f 181 max30001_InterruptB.disable_irq();
AhmadAlkaff 0:7b5d37ca532f 182 max30001_Interrupt2B.disable_irq();
AhmadAlkaff 0:7b5d37ca532f 183 max30001_InterruptB.mode(PullUp);
AhmadAlkaff 0:7b5d37ca532f 184 max30001_InterruptB.fall(&MAX30001Mid_IntB_Handler);
AhmadAlkaff 0:7b5d37ca532f 185 max30001_Interrupt2B.mode(PullUp);
AhmadAlkaff 0:7b5d37ca532f 186 max30001_Interrupt2B.fall(&MAX30001Mid_Int2B_Handler);
AhmadAlkaff 0:7b5d37ca532f 187 max30001_InterruptB.enable_irq();
AhmadAlkaff 0:7b5d37ca532f 188 max30001_Interrupt2B.enable_irq();
AhmadAlkaff 0:7b5d37ca532f 189 MAX30001_AllowInterrupts(1);
AhmadAlkaff 0:7b5d37ca532f 190 // Configuring the FCLK for the ECG, set to 32.768KHZ
AhmadAlkaff 0:7b5d37ca532f 191 pwmout.period_us(31);
AhmadAlkaff 0:7b5d37ca532f 192 pwmout.write(0.5); // 0-1 is 0-100%, 0.5 = 50% duty cycle.
AhmadAlkaff 0:7b5d37ca532f 193 max30001.max30001_sw_rst(); // Do a software reset of the MAX30001
AhmadAlkaff 0:7b5d37ca532f 194 max30001.max30001_INT_assignment(
AhmadAlkaff 0:7b5d37ca532f 195 MAX30001::MAX30001_INT_B, // en_enint_loc
AhmadAlkaff 0:7b5d37ca532f 196 MAX30001::MAX30001_NO_INT, // en_eovf_loc
AhmadAlkaff 0:7b5d37ca532f 197 MAX30001::MAX30001_NO_INT, // en_fstint_loc
AhmadAlkaff 0:7b5d37ca532f 198
AhmadAlkaff 0:7b5d37ca532f 199 MAX30001::MAX30001_INT_2B, // en_dcloffint_loc
AhmadAlkaff 0:7b5d37ca532f 200 MAX30001::MAX30001_INT_B, // en_bint_loc
AhmadAlkaff 0:7b5d37ca532f 201 MAX30001::MAX30001_NO_INT, // en_bovf_loc
AhmadAlkaff 0:7b5d37ca532f 202
AhmadAlkaff 0:7b5d37ca532f 203 MAX30001::MAX30001_INT_2B, // en_bover_loc
AhmadAlkaff 0:7b5d37ca532f 204 MAX30001::MAX30001_INT_2B, // en_bundr_loc
AhmadAlkaff 0:7b5d37ca532f 205 MAX30001::MAX30001_NO_INT, // en_bcgmon_loc
AhmadAlkaff 0:7b5d37ca532f 206
AhmadAlkaff 0:7b5d37ca532f 207 MAX30001::MAX30001_INT_B, // en_pint_loc
AhmadAlkaff 0:7b5d37ca532f 208 MAX30001::MAX30001_NO_INT, // en_povf_loc,
AhmadAlkaff 0:7b5d37ca532f 209 MAX30001::MAX30001_NO_INT, // en_pedge_loc
AhmadAlkaff 0:7b5d37ca532f 210
AhmadAlkaff 0:7b5d37ca532f 211 MAX30001::MAX30001_INT_2B, // en_lonint_loc
AhmadAlkaff 0:7b5d37ca532f 212 MAX30001::MAX30001_INT_B, // en_rrint_loc
AhmadAlkaff 0:7b5d37ca532f 213 MAX30001::MAX30001_NO_INT, // en_samp_loc
AhmadAlkaff 0:7b5d37ca532f 214
AhmadAlkaff 0:7b5d37ca532f 215 MAX30001::MAX30001_INT_ODNR, // intb_Type
AhmadAlkaff 0:7b5d37ca532f 216 MAX30001::MAX30001_INT_ODNR); // int2b_Type
AhmadAlkaff 0:7b5d37ca532f 217
AhmadAlkaff 0:7b5d37ca532f 218 // MAX30001 initialize interrupt
AhmadAlkaff 0:7b5d37ca532f 219 max30001.max30001_ECG_InitStart(En_ecg, Openp, Openn, Pol, Calp_sel, Caln_sel, E_fit, Rate, Gain, Dhpf, Dlpf);
AhmadAlkaff 0:7b5d37ca532f 220 max30001.max30001_synch();
AhmadAlkaff 0:7b5d37ca532f 221 max30001.onDataAvailable(&StreamPacketUint32_ex);
AhmadAlkaff 0:7b5d37ca532f 222 int a;
AhmadAlkaff 0:7b5d37ca532f 223
AhmadAlkaff 0:7b5d37ca532f 224 while (1) {
AhmadAlkaff 0:7b5d37ca532f 225 if (a == 65) {
AhmadAlkaff 0:7b5d37ca532f 226 max30001.max30001_Stop_ECG();
AhmadAlkaff 0:7b5d37ca532f 227 index = 0;
AhmadAlkaff 0:7b5d37ca532f 228 }
AhmadAlkaff 0:7b5d37ca532f 229 // if (a == 97)
AhmadAlkaff 0:7b5d37ca532f 230 // Read ECG
AhmadAlkaff 0:7b5d37ca532f 231 max30001.max30001_ECG_InitStart(En_ecg, Openp, Openn, Pol, Calp_sel, Caln_sel, E_fit, Rate, Gain, Dhpf, Dlpf);
AhmadAlkaff 0:7b5d37ca532f 232
AhmadAlkaff 0:7b5d37ca532f 233 //Read Temperature
AhmadAlkaff 0:7b5d37ca532f 234 //MAX30205_top.readTemperature(&rawTemp_top);
AhmadAlkaff 0:7b5d37ca532f 235 //MAX30205_bottom.readTemperature(&rawTemp_bottom);
AhmadAlkaff 0:7b5d37ca532f 236
AhmadAlkaff 0:7b5d37ca532f 237 // Read BMP280 Temp. and Pressure
AhmadAlkaff 0:7b5d37ca532f 238 //bmp280_pres.ReadCompDataRaw(&bmp280_rawData);
AhmadAlkaff 0:7b5d37ca532f 239 //bmp280_pres.ToFloat(&bmp280_rawData, &Temp_degC, &Press_Pa);
AhmadAlkaff 0:7b5d37ca532f 240 // Convert to Celsius
AhmadAlkaff 0:7b5d37ca532f 241 //celsius_top = MAX30205_top.toCelsius(rawTemp_top);
AhmadAlkaff 0:7b5d37ca532f 242 //celsius_bottom = MAX30205_bottom.toCelsius(rawTemp_bottom);
AhmadAlkaff 0:7b5d37ca532f 243 // Convert to Fahrenheit
AhmadAlkaff 0:7b5d37ca532f 244 //fahrenheit_top = MAX30205_top.toFahrenheit(celsius_top);
AhmadAlkaff 0:7b5d37ca532f 245 //fahrenheit_bottom = MAX30205_bottom.toFahrenheit(celsius_bottom);
AhmadAlkaff 0:7b5d37ca532f 246
AhmadAlkaff 0:7b5d37ca532f 247 //Press_Bar = Press_Pa / 100000;
AhmadAlkaff 0:7b5d37ca532f 248
AhmadAlkaff 0:7b5d37ca532f 249 /* Printing various sensor values */
AhmadAlkaff 0:7b5d37ca532f 250 //usbSerial.printf("***** MAX30205 Temperature Sensor Reading *****\n\r");
AhmadAlkaff 0:7b5d37ca532f 251 //usbSerial.printf("Top Temperature: %.2f\370 C\n\rBottom Temperature: %.2f\370 C \n\rTop Temperature in Farenheit: %.2f\370 F\n\rBottom Temperature in Farenheit %.2f\370 F\n\n\r", celsius_top, celsius_bottom, fahrenheit_top, fahrenheit_bottom);
AhmadAlkaff 0:7b5d37ca532f 252
AhmadAlkaff 0:7b5d37ca532f 253 //usbSerial.printf("***** BMP280 Barometric Sensor Reading *****\n\r");
AhmadAlkaff 0:7b5d37ca532f 254 //usbSerial.printf("Temp_degC : %.2f , Press_Bar is %.2f , Press_pa is %.2f\n\n\r",Temp_degC, Press_Bar, Press_Pa);
AhmadAlkaff 0:7b5d37ca532f 255
AhmadAlkaff 0:7b5d37ca532f 256 usbSerial.printf("-------------------------------------------------\n\n\n\r");
AhmadAlkaff 0:7b5d37ca532f 257
AhmadAlkaff 0:7b5d37ca532f 258 wait(1.5);
AhmadAlkaff 0:7b5d37ca532f 259 }
AhmadAlkaff 0:7b5d37ca532f 260 }