legionella detector

Dependencies:   mbed

Committer:
lewiscameron
Date:
Wed Aug 24 19:43:57 2022 +0000
Revision:
6:4e8b0d2bbe85
Parent:
2:9d6daa8a091c
end

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lewiscameron 2:9d6daa8a091c 1 // it is good practice to put a comment block on the top, with the name and details of the library
lewiscameron 2:9d6daa8a091c 2 // you can also include version numbers to keep track of changes/additions
lewiscameron 2:9d6daa8a091c 3
lewiscameron 2:9d6daa8a091c 4 /* TMP102
lewiscameron 2:9d6daa8a091c 5
lewiscameron 2:9d6daa8a091c 6 Simple library to get the temperature data from a TMP102 sensor over I2C.
lewiscameron 2:9d6daa8a091c 7
lewiscameron 2:9d6daa8a091c 8 v 1.0 - initial release
lewiscameron 2:9d6daa8a091c 9
lewiscameron 2:9d6daa8a091c 10 (c) Craig A. Evans, University of Leeds, Jan 2016
lewiscameron 2:9d6daa8a091c 11
lewiscameron 2:9d6daa8a091c 12 */
lewiscameron 2:9d6daa8a091c 13
lewiscameron 2:9d6daa8a091c 14 // this is called a header guard and prevents a library from being included more than once
lewiscameron 2:9d6daa8a091c 15 // if it is not already defined, it is defined. If it it already defined, it won't be defined again
lewiscameron 2:9d6daa8a091c 16 // the header guard is closed at the end of the file
lewiscameron 2:9d6daa8a091c 17 #ifndef TMP102_H
lewiscameron 2:9d6daa8a091c 18 #define TMP102_H
lewiscameron 2:9d6daa8a091c 19
lewiscameron 2:9d6daa8a091c 20 // the next thing in a library is usually any required defines
lewiscameron 2:9d6daa8a091c 21 // addresses for ADD0 connected to GND
lewiscameron 2:9d6daa8a091c 22 #define TMP102_ADD 0x48
lewiscameron 2:9d6daa8a091c 23 #define TMP102_R_ADD 0x91
lewiscameron 2:9d6daa8a091c 24 #define TMP102_W_ADD 0x90
lewiscameron 2:9d6daa8a091c 25
lewiscameron 2:9d6daa8a091c 26 // register addresses
lewiscameron 2:9d6daa8a091c 27 #define TEMP_REG 0x00
lewiscameron 2:9d6daa8a091c 28 #define CONFIG_REG 0x01
lewiscameron 2:9d6daa8a091c 29 #define THIGH_REG 0x02
lewiscameron 2:9d6daa8a091c 30 #define TLOW_REG 0x03
lewiscameron 2:9d6daa8a091c 31
lewiscameron 2:9d6daa8a091c 32 // we need to include the mbed header (this will also have a header guard to prevent it being included more than once)
lewiscameron 2:9d6daa8a091c 33 #include "mbed.h"
lewiscameron 2:9d6daa8a091c 34
lewiscameron 2:9d6daa8a091c 35 // a library is actually just a C++ class, we will create an instance of this class (an object) in our main code
lewiscameron 2:9d6daa8a091c 36 class TMP102
lewiscameron 2:9d6daa8a091c 37 {
lewiscameron 2:9d6daa8a091c 38 // we define the methods that are 'public' i.e. able to be used by the user
lewiscameron 2:9d6daa8a091c 39 public:
lewiscameron 2:9d6daa8a091c 40
lewiscameron 2:9d6daa8a091c 41 // this is a 'constructor' and is used to create the object
lewiscameron 2:9d6daa8a091c 42 TMP102(PinName sda, PinName scl);
lewiscameron 2:9d6daa8a091c 43
lewiscameron 2:9d6daa8a091c 44 // we will also create an initialisation method
lewiscameron 2:9d6daa8a091c 45 void init();
lewiscameron 2:9d6daa8a091c 46
lewiscameron 2:9d6daa8a091c 47 // and a method to get the temperature - note the return type
lewiscameron 2:9d6daa8a091c 48 float get_temperature();
lewiscameron 2:9d6daa8a091c 49
lewiscameron 2:9d6daa8a091c 50 // we also have 'private' methods that can be used in the library itself, but not called directly by the user
lewiscameron 2:9d6daa8a091c 51 private:
lewiscameron 2:9d6daa8a091c 52
lewiscameron 2:9d6daa8a091c 53 // called in event of error - flashes LED and hangs
lewiscameron 2:9d6daa8a091c 54 void error();
lewiscameron 2:9d6daa8a091c 55 // reads temperature from the sensor
lewiscameron 2:9d6daa8a091c 56 void read_temperature();
lewiscameron 2:9d6daa8a091c 57
lewiscameron 2:9d6daa8a091c 58
lewiscameron 2:9d6daa8a091c 59 // we also do the same for any variables
lewiscameron 2:9d6daa8a091c 60 public:
lewiscameron 2:9d6daa8a091c 61 // don't generally allow direct access to variables, instead use 'accessor' and 'mutator' methods
lewiscameron 2:9d6daa8a091c 62
lewiscameron 2:9d6daa8a091c 63 private:
lewiscameron 2:9d6daa8a091c 64
lewiscameron 2:9d6daa8a091c 65 // class data member names often have a trailing underscore to make them easily identifiable
lewiscameron 2:9d6daa8a091c 66 I2C* i2c_;
lewiscameron 2:9d6daa8a091c 67 DigitalOut* led_;
lewiscameron 2:9d6daa8a091c 68 float temperature_;
lewiscameron 2:9d6daa8a091c 69
lewiscameron 2:9d6daa8a091c 70 };
lewiscameron 2:9d6daa8a091c 71
lewiscameron 2:9d6daa8a091c 72 // end of the header guard
lewiscameron 2:9d6daa8a091c 73 #endif