Как подключить датчик цвета к Arduino?


Подключение датчика цвета к Arduino — отличный способ добавить возможности определения цвета в ваши проекты Arduino. С датчиком цвета ваш Arduino может обнаруживать и различать разные цвета. Это позволяет вам создавать проекты, которые могут реагировать на разноцветные объекты, обнаруживать изменения цвета, сортировать объекты по цвету и многое другое.

В этой статье мы рассмотрим все, что вам нужно знать для подключения датчика цвета к Arduino. Мы рассмотрим необходимые материалы, как подключить его, установить необходимые библиотеки и запрограммировать Arduino для считывания данных о цвете с датчика. Давайте начнем!

Необходимые материалы

Для прочтения этой статьи вам понадобятся следующие материалы:

Arduino Uno или совместимая плата
Датчик цвета – TCS34725 или аналогичный
Макетная плата
Соединительные провода
Резистор 4,7 кОм

Датчик цвета, который мы будем использовать, – это TCS34725, который может определять цветовые диапазоны RGB, а также цветовую температуру. Другие аналогичные датчики цвета, такие как коммутационная плата TCS34725, также будут работать.

Подключение датчика цвета

Нам нужно подключить четыре контакта от TCS34725 к Arduino — питание, земля, SDA и SCL. Вот схема подключения:

Контакт TCS34725 Контакт Arduino
3,3 В 3,3 В
GND GND
SCL A5
SDA A4

В дополнение к вышесказанному нам необходимо подключить подтягивающий резистор 4,7 кОм между линией SDA и 3,3 В. Это необходимо для надежной связи I2C.

После подключения это должно выглядеть примерно так:

Обязательно проверьте трижды все соединения перед включением Arduino!

Установка библиотеки Arduino

Чтобы Arduino получала данные о цвете с датчика TCS34725, нам нужно установить специальную библиотеку. Для этого датчика мы будем использовать библиотеку Adafruit TCS34725. Вот шаги установки:

1. Загрузите библиотеку Adafruit TCS34725 с GitHub: https://github.com/adafruit/Adafruit_TCS34725

2. Распакуйте загруженный файл.

3. В среде разработки Arduino нажмите «Скетч» > «Подключить библиотеку» > «Добавить библиотеку .ZIP»

4. Выберите загруженный вами файл .ZIP, и библиотека будет установлена.

5. Перезапустите Arduino IDE.

Теперь мы можем начать кодирование с использованием библиотеки TCS34725!

Чтение необработанных цветовых данных

Начнем со считывания необработанных цветовых данных красного, зеленого, синего (RGB) с датчика. Вот пример наброска:

“`cpp
#include
#include “Adafruit_TCS34725.h”

Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_700MS, TCS34725_GAIN_1X);

void setup() {
Serial.begin(9600);

if (tcs.begin()) {
Serial.println(“Найден датчик”);
} else {
Serial.println(“TCS34725 не найден … проверьте соединения”);
while (1);
}
}

void loop() {

uint16_t r, g, b, c, colorTemp, lux;

tcs.getRawData(&r, &g, &b, &c);

Serial.print(“R: “); Serial.print(r); Serial.print(” “);
Serial.print(“G: “); Serial.print(g); Serial.print(” “);
Serial.print(“B: “); Serial.print(b); Serial.print(” “);

Serial.println();

delay(500);
}
“`

Это инициализирует датчик, затем непрерывно считывает значения RGB и выводит их на последовательный монитор. Необработанные значения будут находиться в диапазоне 0–65535.

Мы также можем получить значения цветовой температуры и люксов (яркости):

“`cpp
tcs.getRawData(&r, &g, &b, &c);
colorTemp = tcs.calculateColorTemperature(r, g, b);
lux = tcs.calculateLux(r, g, b);
“`

Определение названия цвета

Хотя необработанные значения RGB полезны, часто нам требуется определить название обнаруженного цвета. Мы можем добавить функцию в наш код для преобразования значений RGB в название цвета:

“`cpp
// Функция для определения названия цвета из значений RGB
String detectColor(uint16_t r, uint16_t g, uint16_t b) {

// Проверка, доминирует ли красный
if (r > g && r > b) {
return “Red”;
}

// Проверка, доминирует ли зеленый
else if (g > r && g > b) {
return “Green”;
}

// Проверка, доминирует ли синий
else if (b > r && b > g) {
return “Blue”;
}

// Определить белый цвет
else if (r > 500 && g > 500 && b > 500) {
return “White”;
}

// Определить черный цвет
else if (r Установка пороговых значений цвета

Вместо того, чтобы просто печатать название цвета, мы можем использовать пороговые значения для выполнения действий при обнаружении определенного цвета:

“`cpp
if (colorName == “Red”) {
// Включить красный светодиод
}
else if (colorName == “Green”) {
// Воспроизвести зеленый звук
}
else if (colorName == “Blue”) {
// Включить синий свет
}
“`

Пороговые значения позволяют вашему Arduino реагировать на объекты разного цвета по-разному.

Калибровка датчика Показания

Необработанные значения датчика могут сильно различаться в зависимости от уровня окружающего освещения. Мы можем откалибровать показания, чтобы учесть это.

Добавьте это в начало:

“`cpp
#define RED_DARK 200
#define GREEN_DARK 300
#define BLUE_DARK 150
“`

Затем при получении показаний:

“`cpp
uint16_t red = r – RED_DARK;
uint16_t green = g – GREEN_DARK;
uint16_t blue = b – BLUE_DARK;
“`

Это вычитает уровни окружающего освещения, поэтому определяется только цвет объекта. При необходимости измените пороговые значения.

Проблемы устранения неполадок

Вот некоторые распространенные проблемы и решения при использовании датчика цвета:

Проблема Решение
Нет данных от датчика Проверьте соединения проводки
Обнаружен неправильный цвет Измените пороговые значения RGB
Нестабильные показания Добавьте калибровку для вычитания окружающего освещения
Ошибка «Библиотека не найдена» Переустановите библиотеку датчика

Еще несколько вещей, которые можно попробовать:

– Отрегулируйте время интегрирования и настройки усиления
– Попробуйте разные цветные объекты
– Проверьте, обеспечивает ли ваш источник питания стабильное напряжение 3,3 В
– Проверьте, правильно ли подключен подтягивающий резистор

С небольшой настройкой вы сможете добиться стабильного определения цвета с датчика.

Примеры проектов

Вот несколько примеров проектов, которые вы можете создать с помощью датчика цвета Arduino:

Сортировщик цветов

Сортируйте кубики LEGO или конфеты Skittles по цвету! Определите цвет объекта и используйте сервопривод для сортировки по ячейкам.

Произведите проверку спелости

Определите спелые фрукты и овощи, отслеживая изменения цвета с зеленого на красный/желтый. Полезно для автоматизированного земледелия.

Игра на сопоставление цветов

Мигайте разными цветами и попросите пользователя попытаться сопоставить их, поместив правильный объект над датчиком. Отлично подходит для детей.

Настроение

Определите цвет рубашки и измените RGB-светодиод, чтобы он дополнял его. Например, зеленая рубашка = фиолетовый свет.

Лампа для смешивания цветов

Сканируйте два объекта и смешайте значения RGB, чтобы создать собственный эффект цветной лампы.

Возможности безграничны! Что вы построите?

Заключение

Подключение датчика цвета к вашему Arduino открывает множество захватывающих возможностей для проектов. В этой статье мы рассмотрели:

– Необходимые компоненты, включая датчик TCS34725
– Как подключить датчик к Arduino
– Установка необходимой библиотеки
– Чтение необработанных данных RGB, цветовой температуры и уровня освещенности
– Определение названий цветов по значениям RGB
– Применение пороговых значений для выполнения действий с определенными цветами
– Калибровка показаний для учета окружающего освещения
– Устранение распространенных неполадок
– Примеры проектов, которые вы можете создать

С этой основой вы сможете добавить возможности полного цветового зондирования в свои проекты Arduino. Удачи в экспериментах с цветовым датчиком!