Este repositório contém um código teste para o sensor de cor I2C TCS34725, desenvolvido em C para o Raspberry Pi Pico W (BITDOGLAB).
O projeto demonstra a implementação de um driver que lida com o protocolo de comunicação específico do sensor (usando um bit de comando) e realiza uma inicialização segura, verificando a identidade do chip antes de prosseguir. A arquitetura modular separa o driver da aplicação, facilitando sua reutilização em projetos maiores.
- Leitura de 4 Canais de Cor: Coleta dados dos canais Vermelho, Verde, Azul e Clear (luz visível sem filtro).
- Driver Modular (
tcs34725.c,tcs34725.h): Toda a lógica de comunicação com o sensor é encapsulada, fornecendo uma API limpa e reutilizável. - Protocolo Específico: Implementa corretamente o acesso aos registradores utilizando o
COMMAND_BIT(0x80), conforme exigido pelo datasheet. - Inicialização Robusta: O driver verifica o ID do chip no início para garantir que a comunicação está sendo feita com um sensor compatível (TCS34725/7).
- Configuração Flexível de Porta: Permite alternar facilmente o uso entre os barramentos I2C 0 e I2C 1 através de uma simples alteração no
main.c. - Saída Serial: Exibe os valores brutos de 16 bits de cada canal de cor no monitor serial.
- Placa com Raspberry Pi Pico (neste projeto, foi usada a BitDogLab)
- Sensor de Cor I2C TCS34725
- Raspberry Pi Pico C/C++ SDK
- Ambiente de compilação C/C++ (GCC para ARM, CMake)
- Um programa para monitor serial (ex: o integrado no VS Code, PuTTY, etc.)
- Por padrão, o projeto está configurado para usar o conector I2C 1 (Esquerda) da BitDogLab.
- Para trocar para o conector I2C 0 (Direita), edite o arquivo main.c
- Comente o bloco de configuração do I2C 1.
- Descomente o bloco de configuração do I2C 0.
// --- Configuração da Porta I2C 1 da BitDogLab (Comentado) ---
// #define I2C_PORT i2c1
// const uint I2C_SDA_PIN = 2;
// const uint I2C_SCL_PIN = 3;
// --- Configuração da Porta I2C 0 da BitDogLab (Ativo) ---
#define I2C_PORT i2c0
const uint I2C_SDA_PIN = 0;
const uint I2C_SCL_PIN = 1;- Conecte o sensor TCS34725 na porta I2C configurada.
- Abra um monitor serial conectado à porta COM do seu Pico.
- Você verá a seguinte saída, atualizada a cada meio segundo:
--- Iniciando Sensor de Cor TCS34725 ---
Usando a porta I2C com SDA no pino 2 e SCL no pino 3
Sensor inicializado. Coletando dados de cor...
Clear: 150, Red: 45, Green: 60, Blue: 45
Clear: 1850, Red: 800, Green: 650, Blue: 400
...- main.c: A aplicação principal. Faz a inicialização do hardware e do sensor, e realiza as leituras em loop.
- tcs34725.c: A implementação do driver do sensor, contendo a lógica de comunicação I2C específica do chip.
- tcs34725.h: O arquivo de cabeçalho (a interface ou API) para o driver do TCS34725.
- CMakeLists.txt: O arquivo de build do projeto.
✍️ Autor
ANTONIO SERGIO CASTRO DE CARVALHO JUNIOR