Khác biệt giữa các bản “Cảm biến màu sắc TCS3200”
Từ ChipFC Wiki
(→Giới thiệu) |
(→Sử dụng) |
||
Dòng 36: | Dòng 36: | ||
Sơ đồ kết nối | Sơ đồ kết nối | ||
+ | [[Hình:Ms07.jpg|500px|phải]] | ||
+ | |||
Source code mẫu: | Source code mẫu: |
Phiên bản lúc 10:13, ngày 1 tháng 8 năm 2017
Bài viết này đang được phát triển hoặc chỉnh sửa lớn. |
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.
Đặ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
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);
} |