Датчик цвета. Как подключить к Ардуино

TSC 3200

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

Когда к датчику подносят один из цветов, на плате загорается светодиод. Так же модуль преобразует ток фотодиодов в частоту, определяемого цвета. Данная частота и передается на пин Arduino.

Распиновка датчика

Датчик цвета ардуино TCS230 имеет следующие выводы:

  • GND – земля;
  • OE – контакт включения;
  • S1, S0 – масштабирование частоты импульсов;
  • S3, S2 – вход, настраивается фильтр;
  • OUT – выход преобразованной частоты;
  • VCC – питание модуля.

Что бы установить какой цвет будет считываться модулем, необходимо в  нужной комбинации установить уровни на контактах S2 и S3.Комбинации контактов для выбора цвета следующие:

Тип фотодиодаS2S3
КрасныйLOWLOW
СинийLOWHIGH
Без фильтра (чистый)HIGHLOW
ЗеленыйHIGHHIGH

Так же на модуле есть возможность масштабирования частоты для совместимости работы на разных микроконтроллерах. Предустановлено 3 значения 100%, 20% и 2%. Для этого необходимо установить контакты S0 и S1.

Масштабирование частотыS0S1
ОтключениеLOWLOW
2%LOWHIGH
20%HIGHLOW
100%HIGHHIGH

ВНИМАНИЕ! Для устойчивой работы ардуино, необходимо установить 20%.

Подключение датчика к Ардуино

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

Подключим датчик цвета к ардуино согласно таблице:

TCS230GNDVCCOUTS0S1S2S3
Arduino UnoGND+5V84567

Схема подключения датчика определения цвета

схема подключения датчика цвета

Внешний вид макета

датчик цвета и ардуино

Пример скетча для датчика цвета и Ардуино

После запуска программы, открываем мониторинг порта. Если подносить к модулю определенный цвет, на порту можно будет наблюдать код цвета.

// контакты TCS230 для подключения к Arduino
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8
     
// для хранения частоты, считанной фотодиодами
int redFrequency = 0;
int greenFrequency = 0;
int blueFrequency = 0;
     
// для хранения данных о красном, зеленом и синем цветах
int redColor = 0;
int greenColor = 0;
int blueColor = 0;

// подключение к контактам rgb-светодиода
const byte rPin = 9;
const byte gPin = 10;
const byte bPin = 11;
     
void setup() {
      pinMode(S0, OUTPUT);
      pinMode(S1, OUTPUT);
      pinMode(S2, OUTPUT);
      pinMode(S3, OUTPUT);
      pinMode(rPin, OUTPUT);
      pinMode(gPin, OUTPUT);
      pinMode(bPin, OUTPUT);
     
      pinMode(sensorOut, INPUT);
     
      digitalWrite(S0,HIGH);
      digitalWrite(S1,LOW);
     
      Serial.begin(9600);
}
     
void loop() {
      // считывание данных с фотодиодов с красным фильтром
      digitalWrite(S2,LOW);
      digitalWrite(S3,LOW);
     
      redFrequency = pulseIn(sensorOut, LOW);   // считываем выходную частоту
      redColor = map(redFrequency, 70, 120, 255,0);
     
      Serial.print("R = ");
      Serial.print(redColor);
      delay(100);
     
      // считывание данных с фотодиодов с зеленым фильтром
      digitalWrite(S2,HIGH);
      digitalWrite(S3,HIGH);
    
      greenFrequency = pulseIn(sensorOut, LOW); // считываем выходную частоту
      greenColor = map(greenFrequency, 100, 199, 255, 0);
     
      Serial.print(" G = ");
      Serial.print(greenColor);
      delay(100);
     
      // считывание данных с фотодиодов с синим фильтром
      digitalWrite(S2,LOW);
      digitalWrite(S3,HIGH);
     
      blueFrequency = pulseIn(sensorOut, LOW);  // считываем выходную частоту
      blueColor = map(blueFrequency, 38, 84, 255, 0);
     
      Serial.print(" B = ");
      Serial.print(blueColor);
      delay(100);
     
      // вывод на светодиод распознанный цвет
      // вывод в монитор порта сообщение, какой цвет распознан
      if(redColor > greenColor && redColor > blueColor){
          digitalWrite( bPin, LOW );
          digitalWrite( gPin, LOW );
          digitalWrite( rPin, HIGH );
          Serial.println(" - RED detected!"); 
      }
      if(greenColor > redColor && greenColor > blueColor){
        digitalWrite( rPin, LOW );
        digitalWrite( bPin, LOW );
        digitalWrite( gPin, HIGH );
        Serial.println(" - GREEN detected!");  
      }
      if(blueColor > redColor && blueColor > greenColor){
        digitalWrite( gPin, LOW );
        digitalWrite( rPin, LOW );
        digitalWrite( bPin, HIGH );
        Serial.println(" - BLUE detected!"); 
      }
}

Документация

Где купить?

  • Модуль датчика цвета TCS230
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии