PMK2020 program for temperature sensor STTS751

Dependencies:   mbed

Committer:
nenad
Date:
Fri Apr 24 15:48:14 2020 +0000
Revision:
0:a1acbc39f9ef
PMK2020 program for temperature sensor STTS751

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nenad 0:a1acbc39f9ef 1 #include "mbed.h"
nenad 0:a1acbc39f9ef 2
nenad 0:a1acbc39f9ef 3 I2C tempsensor(PB_9, PB_8); //sda, sc1
nenad 0:a1acbc39f9ef 4 Serial pc(USBTX, USBRX); //tx, rx
nenad 0:a1acbc39f9ef 5 int addr = 0x94U;/** I2C Device Address 8 bit format **/
nenad 0:a1acbc39f9ef 6 char config_t[3];
nenad 0:a1acbc39f9ef 7 char temp_read[3];
nenad 0:a1acbc39f9ef 8 int tempH, tempL;
nenad 0:a1acbc39f9ef 9 float fTemp;
nenad 0:a1acbc39f9ef 10
nenad 0:a1acbc39f9ef 11 int main() {
nenad 0:a1acbc39f9ef 12 pc.printf("Hello world!\n\r");
nenad 0:a1acbc39f9ef 13 config_t[0] = 0xFE; //send to pointer 'Manufacturer ID register' SEND_BYTE
nenad 0:a1acbc39f9ef 14 tempsensor.write(addr, config_t, 1);
nenad 0:a1acbc39f9ef 15 wait(0.1);
nenad 0:a1acbc39f9ef 16 tempsensor.read(addr, temp_read, 1); //read the one-byte data RECEIVE_BYTE
nenad 0:a1acbc39f9ef 17 pc.printf("Manufacturer ID=%d\n\r", temp_read[0]);
nenad 0:a1acbc39f9ef 18 wait(0.5);
nenad 0:a1acbc39f9ef 19
nenad 0:a1acbc39f9ef 20 config_t[0] = 0x03; // WRITE_BYTE
nenad 0:a1acbc39f9ef 21 config_t[1] = 0x8C; // write 0x8C to configuration register 0x03
nenad 0:a1acbc39f9ef 22 tempsensor.write(addr, config_t, 2);
nenad 0:a1acbc39f9ef 23 wait(0.1);
nenad 0:a1acbc39f9ef 24
nenad 0:a1acbc39f9ef 25 config_t[0] = 0x04; // WRITE_BYTE
nenad 0:a1acbc39f9ef 26 config_t[1] = 0x04; // write 0x04 to configuration register 0x04
nenad 0:a1acbc39f9ef 27 tempsensor.write(addr, config_t, 2);
nenad 0:a1acbc39f9ef 28 wait(0.1);
nenad 0:a1acbc39f9ef 29
nenad 0:a1acbc39f9ef 30 while(1) {
nenad 0:a1acbc39f9ef 31 wait(1);
nenad 0:a1acbc39f9ef 32
nenad 0:a1acbc39f9ef 33 config_t[0] = 0x00; //set pointer reg to 'Temperature value high byte register' SEND_BYTE
nenad 0:a1acbc39f9ef 34 tempsensor.write(addr, config_t, 1);
nenad 0:a1acbc39f9ef 35 tempsensor.read(addr, temp_read, 1); //read tempH RECEIVE_BYTE
nenad 0:a1acbc39f9ef 36 tempH=temp_read[0];
nenad 0:a1acbc39f9ef 37
nenad 0:a1acbc39f9ef 38 config_t[0] = 0x02; //set pointer reg to 'Temperature value low byte register' SEND_BYTE
nenad 0:a1acbc39f9ef 39 tempsensor.write(addr, config_t, 1);
nenad 0:a1acbc39f9ef 40 tempsensor.read(addr, temp_read, 1); //read tempL RECEIVE_BYTE
nenad 0:a1acbc39f9ef 41 tempL=temp_read[0];
nenad 0:a1acbc39f9ef 42
nenad 0:a1acbc39f9ef 43 fTemp = ((tempH * 256) + (tempL & 0xFC));// Convert the data to 12-bits
nenad 0:a1acbc39f9ef 44 fTemp=fTemp/256;
nenad 0:a1acbc39f9ef 45
nenad 0:a1acbc39f9ef 46 pc.printf("Temp = %f degC\n\r", fTemp);
nenad 0:a1acbc39f9ef 47 }
nenad 0:a1acbc39f9ef 48 }