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
main.cpp@6:2328feb48792, 2015-05-05 (annotated)
- 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?
User | Revision | Line number | New 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 |