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.
CONEXION DEL CIRCUITO A UNA PLACA FRDMKL25Z
RESPUESTA EN UNA CONSOLA SERIAL TERMITE: AL COLOCAR UN MARCADOR ROJO COMO MUESTRA LA FOTO DE ARRIBA
Revision 0:cbc56fa99411, committed 2020-03-10
- 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