Этот небольшой датчик TCS3200D линзы Вы способны воспринимать цвета и отправить их на Arduino. Хотя это не очень надежный, Это казалось очень круто. Кроме того, версия без линз.
Он имеет 4 Светодиоды, установленные на плате.
Коннекторы: S0, S1, S2, S3, GND, VCC, OUT е LED.
Существует крышка для защиты объектива.
Посмотрите, как было соединение с Arduino.
Я использовал 3.3V напряжение Arduino для подключения светодиодов. Это была очень хорошая яркость.
В этой картине я пытаюсь читать синий мой степлер.
Результаты для синего не очень хорошо, но вы можете видеть, что синий уровень немного выше.
говоря, Я оставлю программу здесь для тех, кто хочет использовать:
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); }
Сейчас я читаю белый экран на компьютере.
Красная ткань. Обратите внимание, что датчик гораздо более чувствителен к этому цвету, чем любой другой.
Зеленый экран:
И, наконец, синий.
Хотя гораздо более чувствительны к красному, чем синий или зеленый, или датчик работает. Может быть, некоторые калибровки необходимо работать лучше. Я оставляю ссылку ниже для версий с объективом (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
Здравствуйте Адриано,
Спасибо вам за полезную статью.
О коде. Это, кажется, отсутствуют некоторые символы?
В то время как ((digitalRead(ШТЫРЬ) == 1) & (подсчитывать < 32640)) {
подсчитывать ;
Should this be "count++;"?
А что об этом куске: Если (кол == 32640) Количество возврата 2;
What's between "count" and "2"?