Bu yazıda, Arduino ile TCS3200 renk sensörünü kullanarak renkleri nasıl algılayacağınızı ve RGB (Kırmızı, Yeşil, Mavi) değerlerini nasıl okuyacağınızı inceleyeceğiz. Bu sensör, renk eşleştirme, renk sıralama veya ortam ışığı ölçümü gibi uygulamalarda kullanılabilir.
TCS3200 Renk Sensörü Hakkında
TCS3200, bir nesnenin yansıttığı veya yaydığı ışığın rengini ölçmek için tasarlanmış bir renk sensörüdür. Sensör, bir dizi filtre ve fotodiyot içerir. Filtreler, gelen ışığı kırmızı, yeşil ve mavi renk bileşenlerine ayırır ve fotodiyotlar bu bileşenlerin yoğunluğunu ölçer. Bu yoğunluk değerleri, RGB renk uzayında rengin temsil edilmesini sağlar.
Gerekli Malzemeler:
- Arduino Uno (veya benzeri bir Arduino kartı)
- TCS3200 renk sensörü modülü
- Breadboard
- Jumper kablolar
Devre Kurulumu:
- TCS3200 Bağlantıları:
- VCC pinini Arduino’nun 5V pinine bağlayın.
- GND pinini Arduino’nun GND pinine bağlayın.
- S2 ve S3 pinlerini Arduino’nun dijital pinlerine bağlayın (örneğin, pin 2 ve 3).
- OUT pinini Arduino’nun analog pinlerinden birine bağlayın (örneğin, A0).
- Devre Şeması:
Devre Bağlantı Tablosu:
Arduino Pinleri | TCS3200 Pinleri | İşlev |
GND | GND | Toprak Bağlantısı |
5V | VCC | Güç Kaynağı (5V) |
Pin 2 | S2 | Filtre Seçimi 1 |
Pin 3 | S3 | Filtre Seçimi 2 |
A0 | OUT | Sensör Çıkışı |
Kodlama:
- Kod Yazma:
- Aşağıdaki kodu Arduino IDE’ye yazın:
const int s2 = 2; const int s3 = 3; const int out = A0; void setup() { // Pinleri çıkış olarak ayarlayın pinMode(s2, OUTPUT); pinMode(s3, OUTPUT); // Seri iletişimi başlatın Serial.begin(9600); } void loop() { // Kırmızı rengi okuyun digitalWrite(s2, LOW); digitalWrite(s3, LOW); int redValue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); // Yeşil rengi okuyun digitalWrite(s2, HIGH); digitalWrite(s3, HIGH); int greenValue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); // Mavi rengi okuyun digitalWrite(s2, LOW); digitalWrite(s3, HIGH); int blueValue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); // RGB değerlerini seri monitöre yazdırın Serial.print("Kirmizi: "); Serial.print(redValue); Serial.print(", Yesil: "); Serial.print(greenValue); Serial.print(", Mavi: "); Serial.println(blueValue); delay(1000); }
Kod Açıklaması:
- Pin Tanımlamaları: TCS3200 sensörünün S2, S3 ve OUT pinleri ile bağlantılı Arduino pinleri tanımlanır.
- setup() Fonksiyonu:
- S2 ve S3 pinleri çıkış olarak ayarlanır. Bu pinler, sensörün hangi renk filtresinin aktif olacağını kontrol etmek için kullanılır.
- Seri iletişim başlatılır.
- loop() Fonksiyonu:
- Renk Okuma: S2 ve S3 pinlerine farklı değerler yazarak kırmızı, yeşil ve mavi renk filtreleri sırayla seçilir. pulseIn() fonksiyonu ile her renk için sensör çıkışındaki darbe genişliği ölçülür.
- RGB Değerlerini Yazdırma: Ölçülen RGB değerleri seri monitöre yazdırılır.
Geliştirmeler:
- Ölçülen RGB değerlerine göre farklı eylemler gerçekleştirin (örneğin, LED’in rengini değiştirin, bir eşik değeri aşılırsa bir alarm verin).
- Renkleri tanımak için bir algoritma uygulayın (örneğin, en yüksek RGB değerine göre rengi belirleyin).
- Ortam ışığı seviyesini ölçmek için sensörü kullanın.
Notlar:
- TCS3200 sensörünün farklı modelleri ve varyasyonları mevcuttur. Kodunuzda, kullandığınız sensörün özelliklerine göre ayarlamalar yapmanız gerekebilir.
- Sensörün hassasiyeti, ortam ışığı koşullarına göre değişebilir. Kalibrasyon yapmanız gerekebilir.
- Sensörün veri sayfasını inceleyerek daha fazla bilgi edinebilirsiniz.
Yorumlar