Contains necessary classes and functions for ELEC351
samplingMaster/samplingMaster.hpp@2:e2b885367ba8, 2017-12-27 (annotated)
- Committer:
- Luka_Danilovic
- Date:
- Wed Dec 27 15:28:20 2017 +0000
- Revision:
- 2:e2b885367ba8
dateAndTime: FINISHED; samplingMaster: FINISHED; recordsMaster: IN PROGRESS
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Luka_Danilovic | 2:e2b885367ba8 | 1 | #ifndef __samplingMaster__ //Inclusion safeguards |
Luka_Danilovic | 2:e2b885367ba8 | 2 | #define __samplingMaster__ |
Luka_Danilovic | 2:e2b885367ba8 | 3 | |
Luka_Danilovic | 2:e2b885367ba8 | 4 | |
Luka_Danilovic | 2:e2b885367ba8 | 5 | typedef struct __attribute__ ((packed)) { // Store one after another |
Luka_Danilovic | 2:e2b885367ba8 | 6 | |
Luka_Danilovic | 2:e2b885367ba8 | 7 | float temp; // Temperature |
Luka_Danilovic | 2:e2b885367ba8 | 8 | float pres; // Presure |
Luka_Danilovic | 2:e2b885367ba8 | 9 | float ligt; // Light level |
Luka_Danilovic | 2:e2b885367ba8 | 10 | |
Luka_Danilovic | 2:e2b885367ba8 | 11 | } TDS_sensorData; // Type Def Struct _ sensor Data |
Luka_Danilovic | 2:e2b885367ba8 | 12 | |
Luka_Danilovic | 2:e2b885367ba8 | 13 | |
Luka_Danilovic | 2:e2b885367ba8 | 14 | /* Spec said that we are not allowed to use any third party code unless it is |
Luka_Danilovic | 2:e2b885367ba8 | 15 | from ARM or STmicroelectronics, so I wrote my own driver for sampling BMP280 & |
Luka_Danilovic | 2:e2b885367ba8 | 16 | ADC in succesion. Ths code for MPB280 was inspired by the BMP280 Datasheet: |
Luka_Danilovic | 2:e2b885367ba8 | 17 | [https://cdn-shop.adafruit.com/datasheets/BST-BMP280-DS001-11.pdf] |
Luka_Danilovic | 2:e2b885367ba8 | 18 | and BMP280 mbed library by "charlie": |
Luka_Danilovic | 2:e2b885367ba8 | 19 | [https://os.mbed.com/users/charly/code/BMP280/] */ |
Luka_Danilovic | 2:e2b885367ba8 | 20 | |
Luka_Danilovic | 2:e2b885367ba8 | 21 | |
Luka_Danilovic | 2:e2b885367ba8 | 22 | |
Luka_Danilovic | 2:e2b885367ba8 | 23 | |
Luka_Danilovic | 2:e2b885367ba8 | 24 | /* BMP280 register addresses and values */ |
Luka_Danilovic | 2:e2b885367ba8 | 25 | #define I2C_adr 0xEE |
Luka_Danilovic | 2:e2b885367ba8 | 26 | #define CONTROL_REGISTER 0xF4 |
Luka_Danilovic | 2:e2b885367ba8 | 27 | #define Tsb_IIR_REGISTER 0xF5 |
Luka_Danilovic | 2:e2b885367ba8 | 28 | #define PRES_ADDRESS_VAL 0xF7 |
Luka_Danilovic | 2:e2b885367ba8 | 29 | #define TEMP_ADDRESS_VAL 0xFA |
Luka_Danilovic | 2:e2b885367ba8 | 30 | #define DIG_Tn_REGISTERS 0x88 |
Luka_Danilovic | 2:e2b885367ba8 | 31 | #define DIG_Pn_REGISTERS 0x8E |
Luka_Danilovic | 2:e2b885367ba8 | 32 | #define PREAS_UPER_LIMIT 0x80000000 |
Luka_Danilovic | 2:e2b885367ba8 | 33 | |
Luka_Danilovic | 2:e2b885367ba8 | 34 | |
Luka_Danilovic | 2:e2b885367ba8 | 35 | class C_sensorData // Class _ sensor Data |
Luka_Danilovic | 2:e2b885367ba8 | 36 | { |
Luka_Danilovic | 2:e2b885367ba8 | 37 | private: |
Luka_Danilovic | 2:e2b885367ba8 | 38 | PinName ADC_pin; |
Luka_Danilovic | 2:e2b885367ba8 | 39 | PinName SDI_pin; |
Luka_Danilovic | 2:e2b885367ba8 | 40 | PinName SCK_pin; |
Luka_Danilovic | 2:e2b885367ba8 | 41 | char inst[18]; // Instruction/Data array |
Luka_Danilovic | 2:e2b885367ba8 | 42 | uint16_t T1Trim; // Unsigned int of 16 bits for temperature trim |
Luka_Danilovic | 2:e2b885367ba8 | 43 | int16_t T2Trim, T3Trim; // Signed ints of 16 bits for temperature trim |
Luka_Danilovic | 2:e2b885367ba8 | 44 | uint16_t P1Trim; // Unsigned int of 16 bits for pressure trim |
Luka_Danilovic | 2:e2b885367ba8 | 45 | int16_t P2Trim, P3Trim, P4Trim, P5Trim, P6Trim, P7Trim, P8Trim, P9Trim; /* |
Luka_Danilovic | 2:e2b885367ba8 | 46 | Signed ints of 16 bits for temperature trim */ |
Luka_Danilovic | 2:e2b885367ba8 | 47 | int32_t tempT, tempA, tempB;// Temporary working variables |
Luka_Danilovic | 2:e2b885367ba8 | 48 | uint32_t tempP; // Temporary working variables |
Luka_Danilovic | 2:e2b885367ba8 | 49 | |
Luka_Danilovic | 2:e2b885367ba8 | 50 | public: |
Luka_Danilovic | 2:e2b885367ba8 | 51 | C_sensorData(); |
Luka_Danilovic | 2:e2b885367ba8 | 52 | TDS_sensorData read(); |
Luka_Danilovic | 2:e2b885367ba8 | 53 | }; |
Luka_Danilovic | 2:e2b885367ba8 | 54 | |
Luka_Danilovic | 2:e2b885367ba8 | 55 | #endif |