Read temperature from a TCN75 (or LM75) I2C thermometer

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /** 06_i2c_tcn75
00002  * Read temperature from a TCN75 (or LM75) I2C thermometer
00003  * I2C address: 1 0 0 1 A2 A2 A0
00004  *
00005  * Hardware requirements:
00006  *  - FRDM-KL25Z board
00007  *  - TCN75 (or LM75) thermometer
00008  *
00009  * Wiring scheme:
00010  *
00011  * TCN75         FRDM-25KLZ
00012  * -------------------------
00013  * 1. SDA        D14 (PTE0 alias I2C_SDA)
00014  * 2. SCL        D15 (PTE1 alias I2C_SCL)
00015  * 3. ALERT       -- (not used)
00016  * 4. GND        GND
00017  * 5. A2         GND
00018  * 6. A1         GND
00019  * 7. A0         GND
00020  * 8. VCC        3V3
00021  */
00022 
00023 #include "mbed.h"
00024 I2C i2c(I2C_SDA, I2C_SCL);        // Arduino compatible pins
00025 const int addr = 0x90;            // TCN75 adress: 0x48<<1
00026 
00027 int main()
00028 {
00029     char cmd[2];                  // data buffer
00030     printf("\r\nTCN75 I2C thermometer\r\n");
00031     cmd[0] = 0x01;                // Pointer to CONFIG register
00032     cmd[1] = 0x00;                // Data for CONFOG register (Normal operation, comparator mode)
00033     i2c.write(addr, cmd, 2);      // Send Address/comman and two bytes
00034     while (1) {
00035         wait(1);
00036         cmd[0] = 0x00;            // Pointer to TEMP register
00037         i2c.write(addr, cmd, 1);  // Write adress/command byte, then register address
00038         i2c.read(addr, cmd, 2);   // Read 2 bytes from TEMP register
00039         float temp = cmd[0]<<8|cmd[1];
00040         printf("Temperatue = %.2f C\r\n", temp/256);
00041     }
00042 }