Sensor I2C Coragem

main.cpp

Committer:
brunnobbco
Date:
2020-06-29
Revision:
0:4c3c977e65f0

File content as of revision 0:4c3c977e65f0:

#include "mbed.h"
 
//#define ADDR    (0x6D<<1)
 
Serial pc(p25, p8); // tx, rx
DigitalOut ADR(P0_12);
 
I2C i2c(p13, p15);


char buffer[2];
uint16_t aux;
 
int main()
{
    ADR=1;
    char sco_bit;
    i2c.frequency(100000);
    
    const int addr = 0x6d << 1;
    char readdata[3];
    
    while(1)
    {
        int ret, value, value1, value2;
        sco_bit = 1;
        pc.printf("Lendo valor em registrador 0xA5…\r\n");
        
        buffer[0] = 0xA5;
        
        //ret = i2c.write((addr << 1) & 0xFE);
        ret = i2c.write(addr, buffer, 1);
        
        if (!ret) // 0:ACK 1:NACK
        {
            ret = i2c.read(addr, readdata, 3);

            if (ret)
                pc.printf("Erro B %d.\r\n", ret);
        }
        else
            pc.printf("Erro A %d.\r\n", ret);

        if (!ret)
        {
            buffer[0] = 0xA5;
            buffer[1] = readdata[0] & 0x07;
            buffer[2] = readdata[1] & 0x0f;
            buffer[3] = readdata[2] & 0x0d;
            ret = i2c.write(addr, buffer, 4);

            if (ret == 0) // 0:ACK 1:NACK
            {
                buffer[0] = 0x30;
                buffer[1] = 0x0A;
                i2c.write(addr, buffer, 2);
                i2c.read(addr, sco_bit, 1);
                
                if (!sco_bit)
                {
                    buffer[0] = 0x06;
                    i2c.write(addr, buffer, 1);
                    i2c.read(addr, readdata[0], 3);
                    buffer[0] = 0x07;
                    i2c.write(addr, buffer, 1);
                    i2c.read(addr, readdata[1], 3);                 
                    buffer[0] = 0x08;
                    i2c.write(addr, buffer, 1);
                    i2c.read(addr, readdata[2], 3);
                    
                    pc.printf("Valor lido: %d\n", readdata);
                }
            }
            else
                pc.printf("Erro C %d.\r\n", ret);
        }
    }
}