IDT Optical Sensors / Mbed 2 deprecated OB1203_IDT

Dependencies:   mbed OB1203_example_driver

Committer:
laserdad
Date:
Wed Apr 25 05:29:19 2018 +0000
Revision:
0:e9ae48b7f6f6
Child:
1:fb6b2b4d5d8a
initial commit untested

Who changed what in which revision?

UserRevisionLine numberNew contents of line
laserdad 0:e9ae48b7f6f6 1 #include "mbed.h"
laserdad 0:e9ae48b7f6f6 2 #include "OB1203.h"
laserdad 0:e9ae48b7f6f6 3 #include "math.h"
laserdad 0:e9ae48b7f6f6 4
laserdad 0:e9ae48b7f6f6 5
laserdad 0:e9ae48b7f6f6 6 #define intb_pin D3
laserdad 0:e9ae48b7f6f6 7
laserdad 0:e9ae48b7f6f6 8 I2C i2c(I2C_SDA,I2C_SCL);
laserdad 0:e9ae48b7f6f6 9 InterruptIn intb(intb_pin);
laserdad 0:e9ae48b7f6f6 10 DigitalOut sda_pullup(D11,1);
laserdad 0:e9ae48b7f6f6 11 DigitalOut scl_pullup(D12,1);
laserdad 0:e9ae48b7f6f6 12 DigitalOut intb_pullup(D13,1);
laserdad 0:e9ae48b7f6f6 13
laserdad 0:e9ae48b7f6f6 14 OB1203 ob1203(&i2c);
laserdad 0:e9ae48b7f6f6 15 Serial pc(USBTX, USBRX,115200);
laserdad 0:e9ae48b7f6f6 16 Timer t;
laserdad 0:e9ae48b7f6f6 17
laserdad 0:e9ae48b7f6f6 18 bool mode = 0; //0 for PS_LS, 1 for SPO2
laserdad 0:e9ae48b7f6f6 19 bool intFlagged =0;
laserdad 0:e9ae48b7f6f6 20
laserdad 0:e9ae48b7f6f6 21 void defaultConfig()
laserdad 0:e9ae48b7f6f6 22 {
laserdad 0:e9ae48b7f6f6 23 ob1203.ls_res = LS_RATE(2); //100ms
laserdad 0:e9ae48b7f6f6 24 ob1203.ls_res = LS_RES(2); //18bit 100ms
laserdad 0:e9ae48b7f6f6 25 ob1203.ls_gain = LS_GAIN(1); //gain 3 default
laserdad 0:e9ae48b7f6f6 26 ob1203.ls_thres_hi = 0x0FFFFF;
laserdad 0:e9ae48b7f6f6 27 ob1203.ls_thres_lo = 0;
laserdad 0:e9ae48b7f6f6 28 ob1203.ls_sai = LS_SAI_OFF;
laserdad 0:e9ae48b7f6f6 29 ob1203.ls_mode = RGB_MODE;
laserdad 0:e9ae48b7f6f6 30 ob1203.ls_en = LS_ON;
laserdad 0:e9ae48b7f6f6 31
laserdad 0:e9ae48b7f6f6 32 ob1203.ps_sai_en = PS_SAI_OFF;
laserdad 0:e9ae48b7f6f6 33 ob1203.ppg_ps_mode = PS_MODE;
laserdad 0:e9ae48b7f6f6 34 ob1203.ps_pulses = PS_PULSES(8);
laserdad 0:e9ae48b7f6f6 35 ob1203.ps_pwidth = PS_PWIDTH(1);
laserdad 0:e9ae48b7f6f6 36 ob1203.ps_rate = PS_RATE(5);
laserdad 0:e9ae48b7f6f6 37 ob1203.ps_avg_en = PS_AVG_OFF;
laserdad 0:e9ae48b7f6f6 38 ob1203.ps_can_ana = PS_CAN_ANA_0;
laserdad 0:e9ae48b7f6f6 39 ob1203.ps_digital_can = 0;
laserdad 0:e9ae48b7f6f6 40 ob1203.ps_hys_level = 0;
laserdad 0:e9ae48b7f6f6 41 ob1203.ps_current = 0x3FF;
laserdad 0:e9ae48b7f6f6 42 ob1203.ps_thres_hi = 0xFF;
laserdad 0:e9ae48b7f6f6 43 ob1203.ps_thres_lo = 0x00;
laserdad 0:e9ae48b7f6f6 44
laserdad 0:e9ae48b7f6f6 45 //interrupts
laserdad 0:e9ae48b7f6f6 46 ob1203.ls_int_sel = LS_INT_SEL_W;
laserdad 0:e9ae48b7f6f6 47 ob1203.ls_var_mode = LS_THRES_INT_MODE;
laserdad 0:e9ae48b7f6f6 48 ob1203.ls_int_en = LS_INT_ON;
laserdad 0:e9ae48b7f6f6 49 ob1203.ppg_ps_en = PPG_PS_ON;
laserdad 0:e9ae48b7f6f6 50 ob1203.afull_int_en = AFULL_INT_ON;
laserdad 0:e9ae48b7f6f6 51 ob1203.ppg_int_en = PPG_INT_OFF;
laserdad 0:e9ae48b7f6f6 52 ob1203.ps_logic_mode = PS_INT_READ_CLEARS;
laserdad 0:e9ae48b7f6f6 53 ob1203.ps_int_en = PS_INT_ON;
laserdad 0:e9ae48b7f6f6 54 ob1203.ls_persist = LS_PERSIST(2);
laserdad 0:e9ae48b7f6f6 55 ob1203.ps_persist = PS_PERSIST(2);
laserdad 0:e9ae48b7f6f6 56
laserdad 0:e9ae48b7f6f6 57 //PPG
laserdad 0:e9ae48b7f6f6 58 ob1203.ir_current = 0x1FF;
laserdad 0:e9ae48b7f6f6 59 ob1203.r_current = 0x1FF;
laserdad 0:e9ae48b7f6f6 60 ob1203.ppg_ps_gain = PPG_PS_GAIN_2;
laserdad 0:e9ae48b7f6f6 61 ob1203.ppg_pow_save = PPG_POW_SAVE_OFF;
laserdad 0:e9ae48b7f6f6 62 ob1203.led_flip = LED_FLIP_OFF;
laserdad 0:e9ae48b7f6f6 63 ob1203.ch1_can_ana = PPG_CH1_CAN(0);
laserdad 0:e9ae48b7f6f6 64 ob1203.ch2_can_ana = PPG_CH2_CAN(0);
laserdad 0:e9ae48b7f6f6 65 ob1203.ppg_avg = PPG_AVG(0);
laserdad 0:e9ae48b7f6f6 66 ob1203.ppg_pwidth = PPG_PWIDTH(4);
laserdad 0:e9ae48b7f6f6 67 ob1203.ppg_freq = PPG_FREQ_60HZ;
laserdad 0:e9ae48b7f6f6 68 ob1203.ppg_rate = PPG_RATE(2);
laserdad 0:e9ae48b7f6f6 69 ob1203.fifo_rollover_en = FIFO_ROLL_ON;
laserdad 0:e9ae48b7f6f6 70 ob1203.fifo_afull_samples_left = AFULL_SAMPLES_LEFT(8);
laserdad 0:e9ae48b7f6f6 71
laserdad 0:e9ae48b7f6f6 72 if(mode)
laserdad 0:e9ae48b7f6f6 73 {
laserdad 0:e9ae48b7f6f6 74 ob1203.init_spo2();
laserdad 0:e9ae48b7f6f6 75 }
laserdad 0:e9ae48b7f6f6 76 else
laserdad 0:e9ae48b7f6f6 77 {
laserdad 0:e9ae48b7f6f6 78 ob1203.init_ps_rgb();
laserdad 0:e9ae48b7f6f6 79 }
laserdad 0:e9ae48b7f6f6 80 }
laserdad 0:e9ae48b7f6f6 81
laserdad 0:e9ae48b7f6f6 82
laserdad 0:e9ae48b7f6f6 83 void intEvent(void)
laserdad 0:e9ae48b7f6f6 84 {
laserdad 0:e9ae48b7f6f6 85 intFlagged = 1;
laserdad 0:e9ae48b7f6f6 86 }
laserdad 0:e9ae48b7f6f6 87
laserdad 0:e9ae48b7f6f6 88 int main()
laserdad 0:e9ae48b7f6f6 89 {
laserdad 0:e9ae48b7f6f6 90 i2c.frequency( 100000 );
laserdad 0:e9ae48b7f6f6 91 char valid;
laserdad 0:e9ae48b7f6f6 92 uint32_t ps_ls_data[6];
laserdad 0:e9ae48b7f6f6 93 char samples2Read = 4;
laserdad 0:e9ae48b7f6f6 94 char fifoBuffer[samples2Read];
laserdad 0:e9ae48b7f6f6 95 uint32_t ppgData[samples2Read];
laserdad 0:e9ae48b7f6f6 96
laserdad 0:e9ae48b7f6f6 97
laserdad 0:e9ae48b7f6f6 98 defaultConfig(); //rgb ps
laserdad 0:e9ae48b7f6f6 99
laserdad 0:e9ae48b7f6f6 100 intb.fall(&intEvent);
laserdad 0:e9ae48b7f6f6 101
laserdad 0:e9ae48b7f6f6 102 while(1)
laserdad 0:e9ae48b7f6f6 103 if(intFlagged)
laserdad 0:e9ae48b7f6f6 104 {
laserdad 0:e9ae48b7f6f6 105 if( mode )
laserdad 0:e9ae48b7f6f6 106 {
laserdad 0:e9ae48b7f6f6 107 ob1203.getFifoSamples(samples2Read,fifoBuffer);
laserdad 0:e9ae48b7f6f6 108 ob1203.parseFifoSamples(samples2Read,fifoBuffer,ppgData);
laserdad 0:e9ae48b7f6f6 109 for (int n=0;n<samples2Read/2;n++)
laserdad 0:e9ae48b7f6f6 110 {
laserdad 0:e9ae48b7f6f6 111 pc.printf("%d %d/r/n",ppgData[2*n],ppgData[2*n+1]);
laserdad 0:e9ae48b7f6f6 112 }
laserdad 0:e9ae48b7f6f6 113 intFlagged = 0;
laserdad 0:e9ae48b7f6f6 114 }
laserdad 0:e9ae48b7f6f6 115 else
laserdad 0:e9ae48b7f6f6 116 {
laserdad 0:e9ae48b7f6f6 117 valid = ob1203.get_ps_ls_data(ps_ls_data);
laserdad 0:e9ae48b7f6f6 118 pc.printf("%d %d %d %d %d %d/r/n",ps_ls_data[0],ps_ls_data[1],ps_ls_data[2],ps_ls_data[3],ps_ls_data[4],ps_ls_data[5]);
laserdad 0:e9ae48b7f6f6 119 }
laserdad 0:e9ae48b7f6f6 120 intFlagged =0;
laserdad 0:e9ae48b7f6f6 121 }
laserdad 0:e9ae48b7f6f6 122 }