Подключение датчика цвета к 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 получала данные о цвете с датчика 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. Удачи в экспериментах с цветовым датчиком!