¡Esta es una revisión vieja del documento!


[I2C] Módulo sensor de color GY-33: Código para Arduino

  • Primero vamos a averiguar, por curiosidad, su dirección I2C. Para ello lo conectamos al bus I2C del Arduino y cargamos en el microcontrolador el programa indicado en [I2C] Código Arduino para localizar direcciones I2C. El resultado es la dirección 0x29
    Escaneando direcciones I2C...
    Encontrada dirección: 41 (0x29)
    Búsqueda finalizada.
    Encontrados 1 dispositivo(s).
  • Conectamos el terminal SCL del sensor al SCL del Arduino Nano (pin A5) y el terminal SDA del sensor al SDA del Arduino Nano (pin A4). Programamos el microcontrolador con el siguiente código para leer los valores del sensor y los mostramos por puerto serie para su visualización. Comprobado. Funciona independientemente de si S0 está a 0 o a 1 y lo mismo con S1: Da siempre los mismos valores. Por ello dejamos S1 a 0 que es como tiene que estar en teoría para comunicarse directamente con el sensor sin el MCU.

    Librerías necesarias

    gy33_sda_scl.ino
    /*
    Finalidad: Leer las medidas de color del sensor y mostrarlas por puerto serie
    Conexiones:
      SCL sensor con pin A5 (SCL) del Arduino Nano
      SDA sensor con pin A4 (SDA) del Arduino Nano
      VCC y GND sensor a fuente alimentación (5V y masa)
      S1 =0
    */
     
    #include <Wire.h>
    #include "Adafruit_TCS34725.h"
     
    /*
    El sensor tiene un array de fotosensores, que convierten la luz en una señal eléctrica.
    La ganancia del sensor es la relación entre la señal eléctrica y la luz recibida.
    Más ganancia significa mayor sensibilidad a ambientes oscuros y más ruido.
    El tiempo de integración es la cantidad de tiempo que el sensor captura luz.
    Mayor tiempo de integración significa medición más lenta, mayor sensibilidad a ambientes oscuros, menor ruido.
    La orden que inicializa con valores por defecto (int time = 2.4ms, gain = 1x) es:
    Adafruit_TCS34725 tcs = Adafruit_TCS34725();
    */
    Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_700MS, TCS34725_GAIN_1X);
     
    void setup(void) {
      Serial.begin(9600);
      // Comprobación de comunicación con el sensor de color
      if (!tcs.begin()) {
        // No se encontró
        Serial.println("Error al iniciar TCS34725");
        while(1){}; //Bucle infinito, parada del programa
      } // Final comprobación
    } // Final setup
     
    void loop(void) {
      // uint16_t: Enteros de 2 bytes sin signo, de 0 a 65535
      uint16_t r, g, b, c, colorTemp, lux;
      // Guardar valores medidos por el sensor en las direcciones de las variables
      tcs.getRawData(&r, &g, &b, &c);
      // Cálculo de la temperatura de color
      colorTemp = tcs.calculateColorTemperature(r, g, b);
      // Cálculo de los lux
      lux = tcs.calculateLux(r, g, b);
      // Visualización de datos
      Serial.print("Temperatura color: "); Serial.print(colorTemp,DEC); Serial.println(" K");
      Serial.print("Lux : "); Serial.println(lux,DEC);
      Serial.print("Clear: "); Serial.println(c,DEC);
      Serial.print("Rojo: "); Serial.println(r,DEC);
      Serial.print("Verde: "); Serial.println(g,DEC);
      Serial.print("Azul: "); Serial.println(b,DEC);
      Serial.println(" ");
      delay(1500);
    }
  • doc/tec/lab/bus_i2c/color_gy33_ino/inicio.1774719263.txt.gz
  • Última modificación: 2026/03/28 18:34
  • por fepg