PMK2020 program for temperature sensor STTS751
main.cpp@0:a1acbc39f9ef, 2020-04-24 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |