Gy-33 modül color sensör

Merhaba, bu renk sensörünü aldım fakat çalıştıramıyorum. Ne datasheet var, ne de detaylı bilgi. Bazı kodları çalıştıramadım. Bazı kodlar ve bağlantılar var. Onda da çalışıyor fakat hatalı, şöyleki: sensör kırımızıyı gördüğünde kırmızı değeri yüzde yüze yakın olmalı veya yeşilde de aynı şekilde yüzde yüze yakın değer göstermeli ama göstermiyor. Her durumda da değişim %10-20 arasında. Modül gy -33 olsa da asıl sensör tcs34725. Ardunio’da bu library’den çalıştırdım.
Sonuç olarak çalıştıramıyorum. Üzerindeki pinleri ne zaman ne şekilde kullanabilirim? Nasıl bir kod ile okuma yapabilirim, hangi pinleri kullanmam gerekir? Yardımcı olabilirseniz menun olurum…
http://wiki.sunfounder.cc/index.php?title=GY-33_Color_Recognition_Sensor_Module

Sizin de dediğiniz gibi tcs34725 çipi kullanılmış yani bu çiple alakalı kaynaklar modülün kaynakları yerine geçebilir kod olarak ve bağlantıları aşağıya bırakıyorum başarılar :smiley:

Not: Bende hazır olarak lcd kodu vardı siz kendinize göre değiştirebilirsiniz :smiley:

#include <Servo.h> // Servo motor kütüphanesi
#include "Wire.h" // I2C iletişim protokolü kütüphanesi
#include "Adafruit_TCS34725.h" // Renk sensörü kütüphanesi
#include <LiquidCrystal_I2C.h> // Lcd kütüphanesi
LiquidCrystal_I2C lcd(0x27,16,2); // Lcd tanımlama
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAN_1X); // Renk sensörü tanımlama
Servo renk_gosterge; // Servo motor tanımlama
 
unsigned int kirmizi_led = 3; // Rgb kırmızı pin
unsigned int mavi_led = 4; // Rgb mavi pin
unsigned int yesil_led = 5; // Rgb yeşil pin
 
uint16_t temizle, kirmizi, yesil, mavi; // Renk değerleri için tanımlamalar
float ortalama, r, g, b; // renk hesaplamaları için tanımlamalar
 
int kirmizi_aci = 30; // Servo motor kırmızı renk gösterge açısı
int yesil_aci = 90; // Servo motor yeşil renk gösterge açısı
int mavi_aci = 150; // Servo motor mavi renk gösterge açısı
int renksiz = 0; // Servo motor tanımsız renk gösterge açısı
 
void setup() { // pinlerin çıkış ve giriş ayarları ve tanımlamaları
   
lcd.init();  // lcd yükleme
lcd.backlight(); // lcd ışık ayarı
Serial.begin(9600); // serial iletişim hızı
 renk_gosterge.attach(9); // servo motor 9. dijital pin tanımlaması
  
if (tcs.begin()) { // renk sensörüne bağlandıysa veri almaya başla
 // lcd ye mesaj gönder
 lcd.setCursor(0, 1); 
lcd.print("Renk Gostergesi");
} else { // renk sensörüne bağlanmadıysa 
  // lcd ye mesaj gönder
   lcd.setCursor(0, 1);
lcd.print("baglanti hatasi!");
while (1); // yeniden bağlanmaya çalış
}
delay(1000); // 1 saniye bekle
 lcd.clear(); // lcd yi temizle
  // led pinlerini çıkış olarak ayarla
 pinMode(kirmizi_led, OUTPUT);
  pinMode(mavi_led, OUTPUT);
   pinMode(yesil_led, OUTPUT);
   // başlangıçta led sönük ayarla
   digitalWrite(kirmizi_led,HIGH);
  digitalWrite(yesil_led,HIGH);
  digitalWrite(mavi_led,HIGH);
}
void loop() { // sonsuz döngü
    
Renk_oku(); // Renk oku algoritmasını çalıştır
Rengi_goster(); // Renk göster algoritmasını çalıştır
delay(500); // 500 milisaniye bekle
}
 
void Renk_oku() // Renk okuma algoritması
{
tcs.getRawData(&kirmizi, &yesil, &mavi, &temizle); // renk sensöründen gelen değerleri al
  
ortalama = (kirmizi+yesil+mavi)/3; // renk değerlerini topla ve ortalamasını al
r = kirmizi/ortalama; // kırmızı renk değeri oranı
g = yesil/ortalama; // yeşil renk değeri oranı
b = mavi/ortalama; // mavi renk değeri oranı
 
 lcd.setCursor(0,0); // lcd ekran ilk satır ve sutununa  "r" yaz
lcd.print("r"); //
lcd.setCursor(1,0); // lcd ekran ilk satır ve ikinci sutununa  r nin değerini yaz
lcd.print(r);
 lcd.setCursor(5,0); // lcd ekran ilk satır ve 5.sutununa  "g" yaz
lcd.print("g:");
lcd.setCursor(7,0); // lcd ekran ilk satır ve 7.sutununa  g değerini yaz
lcd.print(g);
 lcd.setCursor(11,0); // lcd ekran ilk satır ve 11.sutununa  "b" yaz
lcd.print("b:");
lcd.setCursor(13,0); // lcd ekran ilk satır ve 11.sutununa  b değerini yaz
lcd.print(b);
}
 
void Rengi_goster() // Renk gösterme algoritması
{
if ((r > 1.4) && (g < 0.9) && (b < 0.9)) { // kırmızı renk olma durumu
  renk_gosterge.write(kirmizi_aci); // servo motor kırmızı rengi göster
lcd.setCursor(0,1); // lcd ekran 2.satıra kırmızı renk yaz
lcd.print("Kirmizi Renk");
kirmizi_yak(); // kırmızı led yak
}
else if ((r < 0.95) && (g > 1.4) && (b < 0.9)) {  // yeşil renk olma durumu
  renk_gosterge.write(yesil_aci); // servo motor yeşil rengi göster
  lcd.setCursor(0,1); // lcd ekran 2.satıra yeşil renk yaz
lcd.print("Yesil Renk"); // yeşil led yak
yesil_yak();
} 
else if ((r < 0.8) && (g < 1.2) && (b > 1.2)) { // mavi renk olma durumu
   renk_gosterge.write(mavi_aci); // servo motor mavi rengi göster
lcd.setCursor(0,1); // lcd ekran 2.satıra mavi renk yaz
lcd.print("Mavi Renk");
mavi_yak(); // mavi led yak
 
}
else { // tanımlı renkler değilse 
lcd.setCursor(0,1);  // lcd ekran 2.satıra birşey yazma
lcd.print("               ");
renk_gosterge.write(renksiz); // servo motor tanımız pozisyona al
led_kapat(); // ledi kapat
}
}
 
 
void kirmizi_yak() // kırmızı renk tanımı
{
  digitalWrite(kirmizi_led,LOW);
  digitalWrite(yesil_led,HIGH);
  digitalWrite(mavi_led,HIGH);
}
void mavi_yak() // mavi renk tanımı
{
  digitalWrite(kirmizi_led,HIGH);
  digitalWrite(yesil_led,HIGH);
  digitalWrite(mavi_led,LOW);
}
void yesil_yak() // yeşil renk tanımı
{
  digitalWrite(kirmizi_led,HIGH);
  digitalWrite(yesil_led,LOW);
  digitalWrite(mavi_led,HIGH);
}
void led_kapat() // ledi söndür
{
   digitalWrite(kirmizi_led,HIGH);
  digitalWrite(yesil_led,HIGH);
  digitalWrite(mavi_led,HIGH);
}

Verdiğin kodları kullanıyorum. Sonuç aynı. Fazladan ekrana yazma komudu(Serial.print) ekledim. Kodları görüyorum ama çok tutarsız. Kırmızı rengi gösteriyorum. Kırmızı oranı düşük mavi yeşil yüksek değer geliyor. Sensör sıkıntılı desem, diğerleri de aynı sonucu veriyor. Nasıl çalışacak anlayamadım gitti…