Cảm biến màu GY-31 (TCS3200): Phát hiện và đo lường màu sắc

Cảm biến màu GY-31 (TCS3200)

Bạn đã bao giờ tò mò về cách cảm biến màu sắc hoạt động? Cảm biến màu GY-31 (TCS3200) có thể giúp bạn đ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. Với IC TAOS TCS3200 RGB và 4 led trắng, cảm biến này sẽ giúp bạn nhận biết màu sắc của các vật thể xung quanh.

Tính năng của cảm biến màu GY-31 (TCS3200)

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 tương ứng với các màu đỏ, xanh lá và xanh dương. Điều này giúp loại bỏ sai lệch vị trí giữa các màu sắc và đảm bảo kết quả đo lường chính xác.

Thông số kỹ thuật

  • 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á.

Chức năng của các chân cảm biến màu

  • 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 vào cường độ và màu sắc.

Bạn có thể sử dụng cảm biến màu GY-31 (TCS3200) kết hợp với Arduino để nhận biết màu sắc của các vật thể. Dưới đây là 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();

  if (red < blue && red < green && red < 20) {
    Serial.println(" - (Màu Đỏ)");
    digitalWrite(redLed, HIGH);
    digitalWrite(greenLed, LOW);
    digitalWrite(blueLed, LOW);
  } else if (blue < red && blue < green) {
    Serial.println(" - (Màu Xanh Dương)");
    digitalWrite(redLed, LOW);
    digitalWrite(greenLed, LOW);
    digitalWrite(blueLed, HIGH);
  } else if (green < red && green < blue) {
    Serial.println(" - (Màu Xanh Lá)");
    digitalWrite(redLed, LOW);
    digitalWrite(greenLed, HIGH);
    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);
  red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);

  digitalWrite(s3, HIGH);
  blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);

  digitalWrite(s2, HIGH);
  green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
}

Bằng cách sử dụng cảm biến màu GY-31 (TCS3200) và Arduino, bạn có thể nhận biết màu sắc của các vật thể xung quanh bạn. Hãy tham khảo video dưới đây để có cái nhìn cụ thể hơn về cảm biến này.

Video tham khảo

Với cảm biến màu GY-31 (TCS3200), bạn có thể khám phá thế giới màu sắc xung quanh mình một cách thú vị và sáng tạo!