simple blink

Dependencies:   COG4050_ADT7420

Fork of COG4050_ADT7420 by APS Lab

main.cpp

Committer:
APS_Lab
Date:
2018-06-05
Revision:
0:74a0756399ff
Child:
1:f56db8105a6a

File content as of revision 0:74a0756399ff:

#include "mbed.h"

#define ADT7420 0x48

#define RESET_REG 0x2F
#define TEMP_REG 0x00
#define ID_REG 0x0B


DigitalOut led1(LED1);
DigitalOut sensor(D8);

I2C Myi2c(I2C_SDA, I2C_SCL);

Serial pc(USBTX, USBRX);

void ADT7420_reset(void);
int ADT7420_GetID(void);
int ADT7420_GetTemp(void);

// main() runs in its own thread in the OS
int main() {
    float status;
    int res;
    sensor=1;
    //configure for UART
    pc.baud(115200);
    pc.printf("I2C ADT7420 Demo\n");
   
    //configure for I2C @400KHz
    Myi2c.frequency(100000);
   
    //configure for ADT7420
    
    pc.printf("[RESET ] ADT7420\n"); 
    ADT7420_reset();
    wait(0.5);

    pc.printf("[CHECK ID] ADT7420\n"); 
    ADT7420_GetID();

    
    while (true) {
        led1 = 0;
        
        pc.printf("[Get Temp] ADT7420\n"); 
        res = ADT7420_GetTemp();
        
        if(res & 0x1000)
        {
            status = (float)((res - 8192) / 16);
        }
        else
        {
            status = (float)(res / 16);
        }
        
        pc.printf("Current Temp %.0f \n", status);
            
        wait(0.5);
        led1 = 1;
        wait(0.5);
    }
    
}

void ADT7420_reset(void)
{
    char cmd_reset[1];
    cmd_reset[0] = RESET_REG;
    Myi2c.write(ADT7420, cmd_reset, 1);
}
    
int ADT7420_GetID(void)
{
    char cmd_id[1], read_val;
    cmd_id[0]=ID_REG;
    Myi2c.write(ADT7420, cmd_id, 1, 1);
    Myi2c.read(ADT7420, &read_val, 1);
    pc.printf("ID %02x\n", read_val);
    return read_val;
}

int ADT7420_GetTemp(void)
{
    char cmd_temp[1], read_val[2];
    int temp=0;
    cmd_temp[0]=TEMP_REG;
    Myi2c.write(ADT7420, cmd_temp, 1, 1);
    Myi2c.read(ADT7420, read_val, 2);
    pc.printf("Temp Upper %02x\n", read_val[0]);
    pc.printf("Temp Lower %02x\n", read_val[1]);
    
    temp = (int)((read_val[0] << 8) | read_val[1]);
    temp >>= 3;
    return temp;
}