Sensor I2C Coragem

Revision:
0:4c3c977e65f0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Jun 29 20:36:27 2020 +0000
@@ -0,0 +1,78 @@
+#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);
+        }
+    }
+}
\ No newline at end of file