Cảm biến màu GY-31 (TCS3200)
Freeship đơn hàng từ 500k
Kiểm tra khi nhận hàng
Hỗ trợ khách hàng 24/7
- Thông tin sản phẩm
- Hướng dẫn
Cảm biến màu GY-31 (TCS3200) sử dụng IC TAOS TCS3200 RGB với 4 led trắng. Cảm biến màu GY-31 (TCS3200) có thể phát hiện và đo lường một phạm vi gần như vô hạn của màu sắc có thể nhìn thấy. Cảm biến màu GY-31 (TCS3200) tích hợp 1 dãy bộ dò ánh sáng quang bên trong, với mỗi cảm biến ứng với các màu đỏ, xanh lá, xanh dương.
Các bộ lọc của mỗi màu được phân bố đều khắp cảm biến để loại bỏ sai lệch vị trí giữa các màu sắc. bên trong cảm biến có bộ dao động tạo ra sóng vuông có tần số là tỷ lệ thuận với cường độ của màu sắc được lựa chọn.
Cảm biến màu GY-31 TCS3200 được sử dụng để nhận biết màu sắc bằng cách đo phản xạ 3 màu sắc cơ bản từ vật thể là đỏ, xanh lá và xanh dương từ đó xuất ra tần số xung tương ứng với 3 màu này qua các chân tín hiệu, đo 3 tần số xung này và qua 1 vài bước chuyển đổi nhất định là bạn sẽ có đươc thông tin của màu sắc của vật thể cần đo.
THÔNG SỐ CẢM BIẾN MÀU GY-31
- Nguồn 2.7 -> 5.5VDC
- Ngõ ra: 3 tần số xung tương ứng 3 màu đỏ xanh dương và xanh lá.
GND | GND |
OE | Enable (Mức Thấp) |
OUT | Đầu ra tín hiệu tần số |
S0, S1 | Dùng để lựa chọn tỷ lệ tần số |
S2, S3 | Dùng để lựa chọn kiểu photodiod |
VCC | 2.7V đến 5.5V |
SƠ ĐỒ ĐẤU VỚI VỚI ARDUINO (VÍ DỤ)
Chức năng chân Cảm biến màu GY-31 (TCS3200):
+ S0,S1 : Đầu vào chọn tỉ lệ tần số đầu ra .
+ S2,S3 : Đầu vào chọn kiểu photodiode.
+ OE : Đầu vào cho phép xuất tần số ở chân OUT.
+ OUT : Đầu ra là tần số thay đổi phụ thuộc cường độ và màu sắc.
—————–CODE THAM KHẢO—————-
/* Color Sensor Arduino ----------- -------- VCC 5V GND GND s0 8 s1 9 s2 12 s3 11 OUT 10 OE GND */ const int s0 = 8; const int s1 = 9; const int s2 = 12; const int s3 = 11; const int out = 10; // LED pins connected to Arduino int redLed = 2; int greenLed = 3; int blueLed = 4; // Variables int red = 0; int green = 0; int blue = 0; void setup() { Serial.begin(9600); pinMode(s0, OUTPUT); pinMode(s1, OUTPUT); pinMode(s2, OUTPUT); pinMode(s3, OUTPUT); pinMode(out, INPUT); pinMode(redLed, OUTPUT); pinMode(greenLed, OUTPUT); pinMode(blueLed, OUTPUT); digitalWrite(s0, HIGH); digitalWrite(s1, HIGH); } void loop() { color(); /* Serial.print("R Intensity:"); Serial.print(red, DEC); Serial.print(" G Intensity: "); Serial.print(green, DEC); Serial.print(" B Intensity : "); Serial.print(blue, DEC); */ //Serial.println(); if (red < blue && red < green && red < 20) { Serial.println(" - (Red Color)"); digitalWrite(redLed, HIGH); // Turn RED LED ON digitalWrite(greenLed, LOW); digitalWrite(blueLed, LOW); } else if (blue < red && blue < green) { Serial.println(" - (Blue Color)"); digitalWrite(redLed, LOW); digitalWrite(greenLed, LOW); digitalWrite(blueLed, HIGH); // Turn BLUE LED ON } else if (green < red && green < blue) { Serial.println(" - (Green Color)"); digitalWrite(redLed, LOW); digitalWrite(greenLed, HIGH); // Turn GREEN LED ON digitalWrite(blueLed, LOW); } else{ Serial.println(); } delay(300); digitalWrite(redLed, LOW); digitalWrite(greenLed, LOW); digitalWrite(blueLed, LOW); } void color() { digitalWrite(s2, LOW); digitalWrite(s3, LOW); //count OUT, pRed, RED red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); digitalWrite(s3, HIGH); //count OUT, pBLUE, BLUE blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); digitalWrite(s2, HIGH); //count OUT, pGreen, GREEN green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); }
Xin mời nhập nội dung tại đây