Главная / инструменты / Arduino / Датчик цвета с TCS3200D линзой для Arduino

Датчик цвета с TCS3200D линзой для Arduino

Этот небольшой датчик TCS3200D линзы Вы способны воспринимать цвета и отправить их на Arduino. Хотя это не очень надежный, Это казалось очень круто. Кроме того, версия без линз.

570feb7116d85_IMG_20160414_160510

Он имеет 4 Светодиоды, установленные на плате.

570feb730cecc_IMG_20160414_160516

Коннекторы: S0, S1, S2, S3, GND, VCC, OUT е LED.

570feb751d7d3_IMG_20160414_160524

Существует крышка для защиты объектива.

570feb771e264_IMG_20160414_160536

Посмотрите, как было соединение с Arduino.

570feb653fa95_IMG_20160414_160107

Я использовал 3.3V напряжение Arduino для подключения светодиодов. Это была очень хорошая яркость.

570feb66707a2_IMG_20160414_160139

В этой картине я пытаюсь читать синий мой степлер.

570feb67a23fd_IMG_20160414_160153

Результаты для синего не очень хорошо, но вы можете видеть, что синий уровень немного выше.

570feb6879495_IMG_20160414_160203

говоря, Я оставлю программу здесь для тех, кто хочет использовать:

INT s2Pin = 7;
INT s3Pin = 8;
INT outPin = 4;

недействительные установки() {
  pinMode(s2Pin, ВЫВОД);
  pinMode(s3Pin, ВЫВОД);
  pinMode(outPin, ВХОД);
  Serial.begin(9600);
}

ИНТ readOutputPulse(INT контактный) {
  Количество INT = 0;
  в то время как ((digitalRead(штырь) == 1) & (подсчитывать < 32640)) {
    подсчитывать ++;
  }
  если (кол == 32640) Количество возврата + 2;
  кол = 0;  в то время как ((digitalRead(штырь) == 0) & (подсчитывать < 32640)) {
    подсчитывать ++;
  }
  Количество возврата;
}

ИНТ readRed() {
  INT Pulsewidth = 0;
  INT colorStrength = 0;
  digitalWrite(s2Pin, НИЗКИЙ); 
  digitalWrite(s3Pin, НИЗКИЙ);
  задержка(100);
  Pulsewidth = readOutputPulse(outPin);
  colorStrength = (Pulsewidth / 128);
  colorStrength = (255 - colorStrength);
  вернуться colorStrength;
}

ИНТ readGreen() {
  INT Pulsewidth = 0;
  INT colorStrength = 0;
  digitalWrite(s2Pin, ВЫСОКАЯ); 
  digitalWrite(s3Pin, ВЫСОКАЯ);
  задержка(100);
  Pulsewidth = readOutputPulse(outPin);
  colorStrength = (Pulsewidth / 128);
  colorStrength = (255 - colorStrength);
  вернуться colorStrength;
}

ИНТ readBlue() {
  INT Pulsewidth = 0;
  INT colorStrength = 0;
  digitalWrite(s2Pin, НИЗКИЙ); 
  digitalWrite(s3Pin, ВЫСОКАЯ);
  задержка(100);
  Pulsewidth = readOutputPulse(outPin);
  colorStrength = (Pulsewidth / 128);
  colorStrength = (256 - colorStrength);
  вернуться colorStrength;
}

недействительный цикл() {
  Serial.print("р:");
  Serial.println(readRed());
  Serial.print("г:");
  Serial.println(readGreen());
  Serial.print("В:");
  Serial.println(readBlue());
  Serial.println("");
  задержка(500);
}

Сейчас я читаю белый экран на компьютере.

570feb6f21b80_IMG_20160414_160356

Красная ткань. Обратите внимание, что датчик гораздо более чувствителен к этому цвету, чем любой другой.

570feb6a1b811_IMG_20160414_160226

Зеленый экран:

570feb6d3fb12_IMG_20160414_160318

И, наконец, синий.

570feb6bbce1c_IMG_20160414_160245

Хотя гораздо более чувствительны к красному, чем синий или зеленый, или датчик работает. Может быть, некоторые калибровки необходимо работать лучше. Я оставляю ссылку ниже для версий с объективом (Ebay) и без линз (DX):

с линзами – http://www.ebay.com/sch/i.html?_nkw=tcs3200d+lens&_sacat=0

безлинзовой – HTTP://www.dx.com/p/gy-31-tcs230-tcs3200-color-sensor-recognition-module-blue-black-216448

О Адриано

Профессор, Инженер и покупатель продукции сумасшедший Китай.

1 комментарий

  1. Герт-Ян

    Здравствуйте Адриано,

    Спасибо вам за полезную статью.
    О коде. Это, кажется, отсутствуют некоторые символы?

    В то время как ((digitalRead(ШТЫРЬ) == 1) & (подсчитывать < 32640)) {
    подсчитывать ;

    Should this be "count++;"?

    А что об этом куске: Если (кол == 32640) Количество возврата 2;
    What's between "count" and "2"?

Оставить комментарий

Ваш email нигде не будет показанОбязательные для заполнения поля помечены *

*