Общие сведения
Датчик цвета с ИК-фильтром TCS34725 — датчик позволит вашей электронике в буквальном смысле различать цвета окружающих предметов, а не только светлые и темные оттенки. Вам будут доступны значения таких параметров как: цветовая температура (по Кельвину), освещенность (в люксах), а также непосредственные значения красной, зеленой и синей составляющей.
ИК-фильтр
позволяет добиться более точной
цветопередачи, блокируя невидимую
человеческому глазу инфракрасную часть
спектра.
Характеристики
- Напряжение питания модуля: 3.3 - 5В;
- Потребляемый ток: 235 мкА (сред.), 330 мкА (макс.);
- Время преобразований: от 2.4 мс до 700 мс (настраиваемое);
- Скорость интерфейса I2C: до 400 кбит/с;
- Адрес датчика на шине I2C: 0x29 (41);
- Рабочая температура: -40 … +85 ºС;
- Габариты: 20x20 мм;
- Вес: 3.23 г;
Подключение
Для удобства подключения к Arduino воспользуйтесь Trema Shield, Trema Power Shield, Motor Shield или Trema Set Shield.
Модуль подключается к Arduino через интерфейс I2C (выводы SDA и SCL). Питание подается на выводы GND и VIN (от 3.3 до 5В). Вывод LED служит для управления светодиодом. Можно либо не использовать его вовсе (подключить к земле), либо контролировать через цифровой вывод Arduino, либо подключить к выводу INT и контролировать с помощью соответствующих функций из библиотеки.
Подробнее о модуле
Данный модуль построен на базе чипа TCS34725 и общается с Arduino по двухпроводному интерфейсу I2C. На плате дополнительно размещены: светодиод с нейтральным белым светом, стабилизатор напряжения в цепи питания и преобразователь уровней I2C 3.3/5В.
Для работы с модулем рекомендуем вам воспользоваться библиотекой Adafruit_TCS34725.
Примеры
Вывод полученного цвета на RGB-светодиод
// Подключаем библиотеки // #include <Wire.h> // Для работы с шиной I2C #include "Adafruit_TCS34725.h" // Для работы с датчиком TCS34725 // // Выводы для ШИМ - сигнала #define redpin 3 // Дополнительно подключаем резистор номиналом в ~560 Ом для красного цвета #define greenpin 5 // Дополнительно подключаем резистор номиналом в ~1000 Ом для зеленого цвета #define bluepin 6 // Дополнительно подключаем резистор номиналом в ~560 Ом для синего цвета // Для RGB светодиода с общим анодом, подключаем общий вывод к +5В // Для RGB светодиода с общим катодом, подключаем общий вывод к земле // #define commonAnode true // Для RGB светодиода с общим катодом изменить на false // byte gammatable[256]; // Гамма-таблица визуально различимых глазом цветов Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X); // Определяем объект tcs, экземпляр класса Adafruit_TCS34725 // Устанавливаем время выборки и чувствительность сенсора // Время выборки может быть одним из значений: TCS34725_INTEGRATIONTIME_2_4MS, // TCS34725_INTEGRATIONTIME_24MS, TCS34725_INTEGRATIONTIME_50MS, // TCS34725_INTEGRATIONTIME_101MS, TCS34725_INTEGRATIONTIME_154MS, // TCS34725_INTEGRATIONTIME_700MS // Чувствительность сенсора может быть одним из значений: TCS34725_GAIN_1X, // TCS34725_GAIN_4X, TCS34725_GAIN_16X, TCS34725_GAIN_60X void setup() { Serial.begin(9600); // Инициируем передачу данных в монитор последовательного порта на скорости 9600 бит/сек Serial.println("Color View Test!"); // Печатаем приветственное сообщение // Инициируем работу датчика if (tcs.begin()) // Если инициализация сенсора цвета прошла успешно... { Serial.println("Found sensor"); // Выводим сообщение об успешной инициализации } else { Serial.println("No TCS34725 found ... check your connections"); // Выводим сообщение об ошибке while (1); // Входим в бесконечный цикл в случае неуспеха } // Конфигурируем выводы для ШИМ-сигнала как выходные pinMode(redpin, OUTPUT); pinMode(greenpin, OUTPUT); pinMode(bluepin, OUTPUT); // Инициализируем таблицу гамма-значений, она помогает // конвертировать RGB значения в различимые человеческим глазом // Отдельное спасибо за нее PhilB for (int i=0; i<256; i++) { float x = i; x /= 255; x = pow(x, 2.5); x *= 255; if (commonAnode) { gammatable[i] = 255 - x; } else { gammatable[i] = x; } } // Завершение инициализации } void loop() { uint16_t clear, red, green, blue; // Переменные для красной, зеленой и синей составляющих цвета // tcs.setInterrupt(false); // Включаем светодиод // delay(60); // Ждем как минимум 50 миллисекунд для выборки значений // tcs.getRawData(&red, &green, &blue, &clear); // Читаем данные // tcs.setInterrupt(true); // Выключаем светодиод // Выводим в монитор последовательного порта полученные значения Serial.print("C:\t"); Serial.print(clear); Serial.print("\tR:\t"); Serial.print(red); Serial.print("\tG:\t"); Serial.print(green); Serial.print("\tB:\t"); Serial.print(blue); // Вычисляем шестнадцатеричное значение цвета uint32_t sum = clear; float r, g, b; r = red; r /= sum; g = green; g /= sum; b = blue; b /= sum; r *= 256; g *= 256; b *= 256; Serial.print("\t"); Serial.print((int)r, HEX); Serial.print((int)g, HEX); Serial.print((int)b, HEX); Serial.println(); // Выставляем значения на выводах analogWrite(redpin, gammatable[(int)r]); analogWrite(greenpin, gammatable[(int)g]); analogWrite(bluepin, gammatable[(int)b]); }
Комплектация
- 1х Датчик цвета с ИК-фильтром TCS34725;
- 1х Соединитель типа "ПАПА-ПАПА";
Ссылки
- DataSheet;
- Библиотека Adafruit_TCS34725;