Library for TMPx75 Temperature Sensor

Committer:
jake123jake123
Date:
Wed Dec 12 21:53:42 2018 +0000
Revision:
1:ba7de6d38992
Parent:
0:ba71558a5d0a
example code in .h

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jake123jake123 0:ba71558a5d0a 1 #include "TMPx75.h"
jake123jake123 0:ba71558a5d0a 2
jake123jake123 0:ba71558a5d0a 3 // Constructor
jake123jake123 0:ba71558a5d0a 4 TMPx75::TMPx75(I2C *i2c, uint8_t i2c_addr = 0x48) : pc(USBTX, USBRX)
jake123jake123 0:ba71558a5d0a 5 {
jake123jake123 0:ba71558a5d0a 6 _i2c = i2c;
jake123jake123 0:ba71558a5d0a 7 _i2c_addr = i2c_addr;
jake123jake123 0:ba71558a5d0a 8 pc.baud(115200);
jake123jake123 0:ba71558a5d0a 9 }
jake123jake123 0:ba71558a5d0a 10
jake123jake123 0:ba71558a5d0a 11 // Destructor
jake123jake123 0:ba71558a5d0a 12 TMPx75::~TMPx75()
jake123jake123 0:ba71558a5d0a 13 {
jake123jake123 0:ba71558a5d0a 14
jake123jake123 0:ba71558a5d0a 15 }
jake123jake123 0:ba71558a5d0a 16
jake123jake123 0:ba71558a5d0a 17 float TMPx75::read_temperature()
jake123jake123 0:ba71558a5d0a 18 {
jake123jake123 0:ba71558a5d0a 19 char data_write[1];
jake123jake123 0:ba71558a5d0a 20 data_write[0] = (TEMPERATURE_REGISTER);
jake123jake123 0:ba71558a5d0a 21 char data_read[2];
jake123jake123 0:ba71558a5d0a 22
jake123jake123 0:ba71558a5d0a 23 _i2c->write((_i2c_addr<<1), data_write, 1, 1); // no stop
jake123jake123 0:ba71558a5d0a 24 _i2c->read((_i2c_addr<<1), data_read, 2, 0);
jake123jake123 0:ba71558a5d0a 25
jake123jake123 0:ba71558a5d0a 26 int tempval = (int)((int)data_read[0] << 8) | data_read[1];
jake123jake123 0:ba71558a5d0a 27
jake123jake123 0:ba71558a5d0a 28 tempval >>= 4;
jake123jake123 0:ba71558a5d0a 29 if (tempval > 2048)
jake123jake123 0:ba71558a5d0a 30 {
jake123jake123 0:ba71558a5d0a 31 tempval = 4096 - tempval;
jake123jake123 0:ba71558a5d0a 32 }
jake123jake123 0:ba71558a5d0a 33
jake123jake123 0:ba71558a5d0a 34 float temp = (float)tempval/16;
jake123jake123 0:ba71558a5d0a 35
jake123jake123 0:ba71558a5d0a 36 return temp;
jake123jake123 0:ba71558a5d0a 37 }
jake123jake123 0:ba71558a5d0a 38
jake123jake123 0:ba71558a5d0a 39 int TMPx75::read_configuration()
jake123jake123 0:ba71558a5d0a 40 {
jake123jake123 0:ba71558a5d0a 41 char data_write[1];
jake123jake123 0:ba71558a5d0a 42 data_write[0] = (CONFIGURATION_REGISTER);
jake123jake123 0:ba71558a5d0a 43 char data_read[1];
jake123jake123 0:ba71558a5d0a 44 _i2c->write((_i2c_addr<<1), data_write, 1, 1); // no stop
jake123jake123 0:ba71558a5d0a 45 _i2c->read((_i2c_addr<<1), data_read, 1, 0);
jake123jake123 0:ba71558a5d0a 46
jake123jake123 0:ba71558a5d0a 47 return (int)data_read[0];
jake123jake123 0:ba71558a5d0a 48 }
jake123jake123 0:ba71558a5d0a 49
jake123jake123 0:ba71558a5d0a 50 void TMPx75::write_configuration(uint8_t config_byte = DEFAULT_CONFIG)
jake123jake123 0:ba71558a5d0a 51 {
jake123jake123 0:ba71558a5d0a 52 char data_write[2];
jake123jake123 0:ba71558a5d0a 53 data_write[0] = (CONFIGURATION_REGISTER);
jake123jake123 0:ba71558a5d0a 54 data_write[1] = (config_byte | DEFAULT_CONFIG);
jake123jake123 0:ba71558a5d0a 55 _i2c->write((_i2c_addr<<1), data_write, 2, 0);
jake123jake123 0:ba71558a5d0a 56 }
jake123jake123 0:ba71558a5d0a 57
jake123jake123 0:ba71558a5d0a 58 float TMPx75::read_T_LOW()
jake123jake123 0:ba71558a5d0a 59 {
jake123jake123 0:ba71558a5d0a 60 char data_write[1];
jake123jake123 0:ba71558a5d0a 61 data_write[0] = (T_LOW_REGISTER);
jake123jake123 0:ba71558a5d0a 62 char data_read[2];
jake123jake123 0:ba71558a5d0a 63
jake123jake123 0:ba71558a5d0a 64 _i2c->write((_i2c_addr<<1), data_write, 1, 1); // no stop
jake123jake123 0:ba71558a5d0a 65 _i2c->read((_i2c_addr<<1), data_read, 2, 0);
jake123jake123 0:ba71558a5d0a 66
jake123jake123 0:ba71558a5d0a 67 int temp = (int)((int)data_read[0] << 8) | data_read[1];
jake123jake123 0:ba71558a5d0a 68 temp >>= 4;
jake123jake123 0:ba71558a5d0a 69 float t_low = (float)temp/16;
jake123jake123 0:ba71558a5d0a 70
jake123jake123 0:ba71558a5d0a 71 return t_low;
jake123jake123 0:ba71558a5d0a 72 }
jake123jake123 0:ba71558a5d0a 73
jake123jake123 0:ba71558a5d0a 74 void TMPx75::write_T_LOW(float temp)
jake123jake123 0:ba71558a5d0a 75 {
jake123jake123 0:ba71558a5d0a 76 temp = temp * 16;
jake123jake123 0:ba71558a5d0a 77 unsigned int u_temp = temp;
jake123jake123 0:ba71558a5d0a 78 u_temp = u_temp << 4;
jake123jake123 0:ba71558a5d0a 79
jake123jake123 0:ba71558a5d0a 80 char data_write[3];
jake123jake123 0:ba71558a5d0a 81 data_write[0] = (T_LOW_REGISTER);
jake123jake123 0:ba71558a5d0a 82 data_write[1] = (u_temp>>8);
jake123jake123 0:ba71558a5d0a 83 data_write[2] = (u_temp);
jake123jake123 0:ba71558a5d0a 84
jake123jake123 0:ba71558a5d0a 85 _i2c->write((_i2c_addr<<1), data_write, 2, 0);
jake123jake123 0:ba71558a5d0a 86 }
jake123jake123 0:ba71558a5d0a 87
jake123jake123 0:ba71558a5d0a 88 float TMPx75::read_T_HIGH()
jake123jake123 0:ba71558a5d0a 89 {
jake123jake123 0:ba71558a5d0a 90 char data_write[1];
jake123jake123 0:ba71558a5d0a 91 data_write[0] = (T_HIGH_REGISTER);
jake123jake123 0:ba71558a5d0a 92 char data_read[2];
jake123jake123 0:ba71558a5d0a 93
jake123jake123 0:ba71558a5d0a 94 _i2c->write((_i2c_addr<<1), data_write, 1, 1); // no stop
jake123jake123 0:ba71558a5d0a 95 _i2c->read((_i2c_addr<<1), data_read, 2, 0);
jake123jake123 0:ba71558a5d0a 96
jake123jake123 0:ba71558a5d0a 97 int temp = (int)((int)data_read[0] << 8) | data_read[1];
jake123jake123 0:ba71558a5d0a 98 temp >>= 4;
jake123jake123 0:ba71558a5d0a 99 float t_high = (float)temp/16;
jake123jake123 0:ba71558a5d0a 100
jake123jake123 0:ba71558a5d0a 101 return t_high;
jake123jake123 0:ba71558a5d0a 102 }
jake123jake123 0:ba71558a5d0a 103
jake123jake123 0:ba71558a5d0a 104 void TMPx75::write_T_HIGH(float temp)
jake123jake123 0:ba71558a5d0a 105 {
jake123jake123 0:ba71558a5d0a 106 temp = temp * 16;
jake123jake123 0:ba71558a5d0a 107 unsigned int u_temp = temp;
jake123jake123 0:ba71558a5d0a 108 u_temp = u_temp << 4;
jake123jake123 0:ba71558a5d0a 109
jake123jake123 0:ba71558a5d0a 110 char data_write[3];
jake123jake123 0:ba71558a5d0a 111 data_write[0] = (T_HIGH_REGISTER);
jake123jake123 0:ba71558a5d0a 112 data_write[1] = (u_temp>>8);
jake123jake123 0:ba71558a5d0a 113 data_write[2] = (u_temp);
jake123jake123 0:ba71558a5d0a 114
jake123jake123 0:ba71558a5d0a 115 _i2c->write((_i2c_addr<<1), data_write, 2, 0);
jake123jake123 0:ba71558a5d0a 116 }