Cảm biến màu sắc TCS3200

Từ ChipFC Wiki
Phiên bản vào lúc 11:56, ngày 2 tháng 3 năm 2018 của BS135 (Thảo luận | đóng góp) (Sử dụng)
(khác) ← Phiên bản cũ | xem phiên bản hiện hành (khác) | Phiên bản mới → (khác)
Bước tới: chuyển hướng, tìm kiếm

Editor.png

Bài viết này đang được phát triển hoặc chỉnh sửa lớn.
Bạn có thể đóng góp để bài viết hoàn thiện hơn.
Sau khi chỉnh sửa xong thông báo này sẽ được gỡ bỏ.

Giới thiệu

  • Cảm biến nhận biết màu sắc và xuất ra 3 tần số xung tương ứng với 3 màu cơ bản là Đỏ, Xanh Lá và Xanh Dương, đo được 3 tần số xung này cùng với vài bước chuyển đổi nhất định sẽ có đươc thông tin của màu sắc cần đo.
Ms06.jpg

Đặc điểm

  • Chuyển đổi cường độ ánh sáng thành tần số có độ phân giải cao.
  • Lập trình lựa chọn bộ lọc màu sắc khác nhau và dạng tần số xuất ra.
  • Dễ dàng giao tiếp với vi điều khiển.
  • Điện áp đầu vào 2.7-5.5V.

Sơ đồ chân

Thứ tự chân Tên gọi Mô tả
1 VCC nguồn 2,7-5,5V
2 GND mass
3 s1,s0 dùng để lựa chọn tỉ lệ tần số
4 s3,s2 dùng để lựa chọn kiểu photodiod
5 OUT đưa ra tín hiệu tần số
6 LED

Sử dụng

Sơ đồ kết nối Ms07.png

Source code mẫu:

const int s0 =8;
const int s1 =9 ;
const int s2 =12;
const int s3 = 11;
const int out = 10;
//kết nối led với arduino để hiện thị theo màu dc nhận
//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("Y cuong do: ");
  Serial.print(red,DEC);
  Serial.print("G cuong do: ");
  Serial.print(green,DEC);
  Serial.print("B cuong do: ");
  Serial.print(blue,DEC);

  if(red < blue && red < green && red < 25)
  {
    Serial.println("- red color");
//    digitalWrite(redLed, HIGH);
//    digitalWrite(greenLed, LOW);
//    digitalWrite(blueLed,LOW);
    delay(1000);
  }
  else{
    if(blue < red && blue < green)
    {
      Serial.println("-blue color");
 //     digitalWrite(redLed, LOW);
 //     digitalWrite(greenLed, LOW);
 //     digitalWrite(blueLed,HIGH);    
    } else {
          if(green < red && green < blue)
          {
            Serial.println("-green color");
//            digitalWrite(redLed, LOW);
//            digitalWrite(greenLed, HIGH);
//            digitalWrite(blueLed,LOW);  
          }
          else{
            Serial.println();  
          }
    }
  }
  delay(500);
//  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);
  
}

Tham khảo thêm