Code supports writing to the SD card as well as working with the Volckens group smartphone apps for the mbed HRM1017

Dependencies:   ADS1115 BLE_API BME280 Calibration CronoDot EEPROM LSM303 MCP40D17 NCP5623BMUTBG SDFileSystem SI1145 STC3100 mbed nRF51822

Fork of UPAS_BLE_and_USB by Volckens Group Sensors

Committer:
caseyquinn
Date:
Tue May 05 15:13:06 2015 +0000
Revision:
6:2328feb48792
Parent:
5:0edf35b6d79a
Child:
7:a24d7156bc02
Added option to change Omron Gain for increased voltage range for Dan's manifold design.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
caseyquinn 0:14d46ef4b6cb 1 #include "mbed.h"
caseyquinn 0:14d46ef4b6cb 2 #include "SDFileSystem.h"
caseyquinn 0:14d46ef4b6cb 3 #include "Adafruit_ADS1015.h"
caseyquinn 1:37babeb68ab9 4 #include "MCP40D17.h"
caseyquinn 5:0edf35b6d79a 5 #include "BMP280.h"
caseyquinn 1:37babeb68ab9 6
caseyquinn 1:37babeb68ab9 7 #define SERIAL_BAUD_RATE 9600
caseyquinn 0:14d46ef4b6cb 8
caseyquinn 0:14d46ef4b6cb 9 I2C i2c(p22, p20);
caseyquinn 0:14d46ef4b6cb 10 Adafruit_ADS1115 ads(&i2c);
caseyquinn 1:37babeb68ab9 11 MCP40D17 DigPot(&i2c);
caseyquinn 5:0edf35b6d79a 12 BMP280 bmpsensor(p22, p20);
caseyquinn 2:e596e685eb39 13 Serial pc(USBTX, USBRX);
caseyquinn 1:37babeb68ab9 14 DigitalOut blower(p29, 1);
caseyquinn 0:14d46ef4b6cb 15
caseyquinn 4:69bd7e8a994c 16 Timer t;
caseyquinn 4:69bd7e8a994c 17
caseyquinn 0:14d46ef4b6cb 18 int omronReading;
caseyquinn 0:14d46ef4b6cb 19 int vInReading;
caseyquinn 0:14d46ef4b6cb 20 int vBlowerReading;
caseyquinn 0:14d46ef4b6cb 21 int omronDiff;
caseyquinn 6:2328feb48792 22 int digital_pot_setpoint = 0x02; //min = 0x7F, max = 0x00
caseyquinn 3:2d059d88582b 23 char filename[] = "/sd/UPASLOG00.txt";
caseyquinn 2:e596e685eb39 24
caseyquinn 0:14d46ef4b6cb 25 SDFileSystem sd(SPIS_PSELMOSI, SPIS_PSELMISO, SPIS_PSELSCK, SPIS_PSELSS, "sd"); // I believe this matches Todd's pinout, let me know if this doesn't work. (p12, p13, p15, p14)
caseyquinn 2:e596e685eb39 26
caseyquinn 0:14d46ef4b6cb 27 int main()
caseyquinn 0:14d46ef4b6cb 28 {
caseyquinn 2:e596e685eb39 29
caseyquinn 4:69bd7e8a994c 30 t.start();
caseyquinn 2:e596e685eb39 31 // create a new file
caseyquinn 2:e596e685eb39 32
caseyquinn 3:2d059d88582b 33 for (uint8_t i = 0; i < 100; i++) {
caseyquinn 3:2d059d88582b 34 filename[11] = i/10 + '0';
caseyquinn 3:2d059d88582b 35 filename[12] = i%10 + '0';
caseyquinn 2:e596e685eb39 36 FILE *fp = fopen(filename, "r");
caseyquinn 2:e596e685eb39 37 if (fp == NULL) {
caseyquinn 2:e596e685eb39 38 // only open a new file if it doesn't exist
caseyquinn 2:e596e685eb39 39 FILE *fp = fopen(filename, "w");
caseyquinn 2:e596e685eb39 40 fclose(fp);
caseyquinn 2:e596e685eb39 41 break; // leave the loop!
caseyquinn 2:e596e685eb39 42 }
caseyquinn 2:e596e685eb39 43
caseyquinn 2:e596e685eb39 44
caseyquinn 2:e596e685eb39 45 }
caseyquinn 3:2d059d88582b 46
caseyquinn 1:37babeb68ab9 47
caseyquinn 0:14d46ef4b6cb 48 while(1){
caseyquinn 2:e596e685eb39 49
caseyquinn 6:2328feb48792 50 omronReading = ads.readADC_SingleEnded(0, 0xC583); // read channel 0 PGA = 2 : Full Scale Range = 2.048V
caseyquinn 6:2328feb48792 51 //omronReading = ads.readADC_SingleEnded(0, 0xC183); // read channel 0 PGA = 1 : Full Scale Range = 4.096V
caseyquinn 0:14d46ef4b6cb 52 vInReading = ads.readADC_SingleEnded(1, 0xD583); // read channel 0
caseyquinn 0:14d46ef4b6cb 53 vBlowerReading = ads.readADC_SingleEnded(2, 0xE783); // read channel 0
caseyquinn 0:14d46ef4b6cb 54 omronDiff = ads.readADC_Differential(0x8583); // differential channel 2-3
caseyquinn 2:e596e685eb39 55
caseyquinn 2:e596e685eb39 56 //Mount the filesystem
caseyquinn 2:e596e685eb39 57 sd.mount();
caseyquinn 3:2d059d88582b 58 FILE *fp = fopen(filename, "a");
caseyquinn 5:0edf35b6d79a 59 fprintf(fp, "%f,%d,%d,%d,%d,%2.2f,%04.2f\r\n", t.read(),omronReading,vInReading, vBlowerReading, omronDiff,bmpsensor.getTemperature(), bmpsensor.getPressure());
caseyquinn 2:e596e685eb39 60 fclose(fp);
caseyquinn 2:e596e685eb39 61 //Unmount the filesystem
caseyquinn 2:e596e685eb39 62 sd.unmount();
caseyquinn 2:e596e685eb39 63
caseyquinn 4:69bd7e8a994c 64 wait(5);
caseyquinn 2:e596e685eb39 65
caseyquinn 2:e596e685eb39 66 DigPot.writeRegister(digital_pot_setpoint);
caseyquinn 2:e596e685eb39 67
caseyquinn 2:e596e685eb39 68
caseyquinn 0:14d46ef4b6cb 69 }
caseyquinn 0:14d46ef4b6cb 70 }
caseyquinn 0:14d46ef4b6cb 71
caseyquinn 0:14d46ef4b6cb 72
caseyquinn 0:14d46ef4b6cb 73