SENSOR DE COLOR CON EL MODULO I2C. TCS34725 PASA VALORES A UNA TERMINAL SERIAL. PRUEBA USANDO EL CAPUCHÓN DE UN MARCADOR DE COLOR ROJO.

Dependencies:   mbed

https://os.mbed.com/media/uploads/tony63/color.png

CONEXION DEL CIRCUITO A UNA PLACA FRDMKL25Z

https://os.mbed.com/media/uploads/tony63/color1.png

RESPUESTA EN UNA CONSOLA SERIAL TERMITE: AL COLOCAR UN MARCADOR ROJO COMO MUESTRA LA FOTO DE ARRIBA

Files at this revision

API Documentation at this revision

Comitter:
tony63
Date:
Tue Mar 10 00:34:31 2020 +0000
Commit message:
SENSOR DE COLOR TCS34725

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r cbc56fa99411 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Mar 10 00:34:31 2020 +0000
@@ -0,0 +1,83 @@
+#include "mbed.h"
+
+#include "mbed.h"
+ 
+I2C i2c(PTE0, PTE1); //pins for I2C communication (SDA, SCL)
+Serial pc(USBTX, USBRX);    //Used to view the colors that are read in
+ 
+int sensor_addr = 41 << 1;
+ 
+DigitalOut green(LED1);
+DigitalOut led(PTC12);
+ 
+int main() {
+    pc.baud(9600);
+    green = 1; // off
+    
+    // Connect to the Color sensor and verify
+    
+    i2c.frequency(200000);
+    
+    char id_regval[1] = {146};
+    char data[1] = {0};
+    i2c.write(sensor_addr,id_regval,1, true);
+    i2c.read(sensor_addr,data,1,false);
+    
+    if (data[0]==68) {
+        green = 0;
+        wait (2); 
+        green = 1;
+        } else {
+        green = 1; 
+    }
+    
+    // Initialize color sensor
+    
+    char timing_register[2] = {129,0};
+    i2c.write(sensor_addr,timing_register,2,false);
+    
+    char control_register[2] = {143,0};
+    i2c.write(sensor_addr,control_register,2,false);
+    
+    char enable_register[2] = {128,3};
+    i2c.write(sensor_addr,enable_register,2,false);
+    
+    // Read data from color sensor (Clear/Red/Green/Blue)
+    led = 1;
+    while (true) { 
+        char clear_reg[1] = {148};
+        char clear_data[2] = {0,0};
+        i2c.write(sensor_addr,clear_reg,1, true);
+        i2c.read(sensor_addr,clear_data,2, false);
+        
+        int clear_value = ((int)clear_data[1] << 8) | clear_data[0];
+        
+        char red_reg[1] = {150};
+        char red_data[2] = {0,0};
+        i2c.write(sensor_addr,red_reg,1, true);
+        i2c.read(sensor_addr,red_data,2, false);
+        
+        int red_value = ((int)red_data[1] << 8) | red_data[0];
+        
+        char green_reg[1] = {152};
+        char green_data[2] = {0,0};
+        i2c.write(sensor_addr,green_reg,1, true);
+        i2c.read(sensor_addr,green_data,2, false);
+        
+        int green_value = ((int)green_data[1] << 8) | green_data[0];
+        
+        char blue_reg[1] = {154};
+        char blue_data[2] = {0,0};
+        i2c.write(sensor_addr,blue_reg,1, true);
+        i2c.read(sensor_addr,blue_data,2, false);
+        
+        int blue_value = ((int)blue_data[1] << 8) | blue_data[0];
+        
+        // print sensor readings
+        
+        pc.printf("Clear (%d), Red (%d), Green (%d), Blue (%d)\n", clear_value, red_value, green_value, blue_value);
+        //The above code displays the red, green, and blue values read in by the color sensor.
+        wait(0.5);
+    }
+    
+}
\ No newline at end of file
diff -r 000000000000 -r cbc56fa99411 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Tue Mar 10 00:34:31 2020 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file