Momo Medical / Momo_Pilot_1

Dependencies:   ADS1015 MPU6050 PixelArray mbed

Fork of Momo_New by Momo Medical

Revision:
1:a8e61f3910ad
Parent:
0:c0e44c46c573
--- a/ADS1115-hello_world/main.cpp	Mon Aug 28 10:16:59 2017 +0000
+++ b/ADS1115-hello_world/main.cpp	Thu Sep 14 08:37:16 2017 +0000
@@ -2,42 +2,73 @@
 #include "Adafruit_ADS1015.h"
 #include "USBSerial.h"
 #include "MPU6050.h"
-#define SERIAL_BAUD_RATE    115200
 
-MPU6050 ark(p9,p10);
-I2C i2c(p28, p27);
-Adafruit_ADS1115 ads0(&i2c, 0x48);
-Adafruit_ADS1115 ads1(&i2c, 0x49);
-//Adafruit_ADS1115 ads2(&i2c, 0x4A);
-Serial pc(USBTX, USBRX); // tx, rx
-Ticker sample;
-short read[8];
-int done;
-int j;
-int k;
-float acce[3];
+I2C i2c(p28, p27);                  // I2C
+MPU6050 agu(p28,p27);               // Accelerometer/Gyroscope Unit
+Adafruit_ADS1115 pr1(&i2c, 0x48);   // first PiëzoResistive ADC
+Adafruit_ADS1115 pr2(&i2c, 0x49);   // second PiëzoResistive ADC
+Adafruit_ADS1115 pel(&i2c, 0x4B);   // PiëzoElectric ADC
+Serial pc(USBTX, USBRX); // tx, rx  // Serial USB connection
+Timer t;                            // Timer for equally time-spaced samples
+Ticker sample_cycle;                // Polling cycle
+int cycle_time = 100000;            // Cycle time in us
+int i2c_freq = 400000;              // I2C Frequency
+int usb_baud = 115200;              // USB Baud rate
+short res[8] = {0,0,0,0,0,0,0,0};   // 8 PR sensors 1 time per cycle
+short elec[5] = {0,0,0,0,0};        // 1 PE sensor 5 times per cycle
+int angle = 0;                      // Accelerometer Z-axis
+int k = 0;
+float acce[3];                      // Raw accelerometer data
+float gyro[3];                      // Raw gyroscope data
+bool r = 0;
 
 void read_adc()
 {
+    t.reset();
+    t.start();
+
+    elec[0] = pel.readADC_SingleEnded(0);
+
     for (k = 0; k < 4; k = k + 1) {
-    read[k]=    ads0.readADC_SingleEnded(k);
-    read[k+4]=  ads1.readADC_SingleEnded(k);
+        res[k] =    pr1.readADC_SingleEnded(k);
+    }
+    while(t.read_us()<(1*(cycle_time/5))) {}
+
+    elec[1] = pel.readADC_SingleEnded(0);
+
+    for (k = 0; k < 4; k = k + 1) {
+        res[k+4] =  pr2.readADC_SingleEnded(k);
     }
-    ark.getAccelero(acce);
-    j = acce[0]*10;
-    pc.printf(",%d,%d,%d,%d,%d,%d,%d,%d,%d,\r\n", read[1], read[0], read[4], read[7], read[5], read[6], read[2], read[3],j); // print 'read' array to serial port
-    //pi.printf(",%d,%d,%d,%d,%d,%d,%d,%d,\r\n", read[1], read[0], read[4], read[7], read[5], read[6], read[2], read[3]); // print 'read' array to serial port
+    while(t.read_us()<(2*(cycle_time/5))) {}
+
+    elec[2] = pel.readADC_SingleEnded(0);
+
+    agu.getAccelero(acce);
+    angle = acce[2]*10;
+    
+    while(t.read_us()<(3*(cycle_time/5))) {}
+
+    elec[3] = pel.readADC_SingleEnded(0);
+
+    agu.getGyro(gyro);
+    
+    while(t.read_us()<(4*(cycle_time/5))) {}
+
+    elec[4] = pel.readADC_SingleEnded(0);
+
+    while(t.read_us()<(4.5*(cycle_time/5))) {}
+    pc.printf(",%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,\r\n", res[4], res[7], res[6], res[5], res[1], res[0], res[2], res[3], angle, elec[0], elec[1], elec[2], elec[3], elec[4], acce[0]*100, acce[1]*100, acce[2]*100, gyro[0]*100, gyro[1]*100, gyro[2]*100); // print all to serial port
 }
 
 int main()
 {
-    i2c.frequency(400000);
-    pc.baud(115200);
-    //pi.baud(115200);
-    ads0.setGain(GAIN_ONE); // set range to +/-4.096V
-    ads1.setGain(GAIN_ONE); // set range to +/-4.096V
-    sample.attach_us(&read_adc, 100000);
+    i2c.frequency(i2c_freq);
+    pc.baud(usb_baud);
+    pr1.setGain(GAIN_TWOTHIRDS); // set range to +/-6.144V
+    pr2.setGain(GAIN_TWOTHIRDS); // set range to +/-6.144V
+    pel.setGain(GAIN_TWOTHIRDS); // set range to +/-6.144V
+    sample_cycle.attach_us(&read_adc, cycle_time);
     while (1) {
-        wait_ms(101); // wait indefinitely because the ticker restarts every 50 ms
+        wait_us(cycle_time+1); // wait indefinitely because the ticker restarts every 50 ms
     }
 }
\ No newline at end of file