Arduino ile Renk Algılama Sensörü Uygulaması

65 15.289

Bu projemizde renk algıma sensörü ile arduino kullanarak basit bir uygulama yapacağız.Yapacağımız uygulamada sensörümüz rengi algılayarak rgb ledimizi aynı renkte yakacak.Arduino ile renk algılama projemize başlayalım.

Malzemeler:

  1. Arduino
  2. TCS3200 Renk Sensörü Kartı
  3. Rgb Led
  4. Direnç

Projeyi Satın Al

Elektronik Bağlantı Şeması:
Renk Sensörü Arduino Bağlantısı
Sensör Pin
Arduino Pin
S0 GND
S1 5V
S2 pin 7
S3 pin 8
OUT pin 4
VCC 5V
GND GND
RGB Led Bağlantıları:

Şekildeki bağlantı renklerinden rgb bacaklarının hangi renkte olduğunu görebilirsiniz.

Mavi-6.pin

Yeşil-10.pin

Kırmızı-11.pin

Yazılım Kısmı:

Renk sensöründeki pinlerin high ve low olma durumlarına göre oluşacak renkler aşağıdaki gibidir.

S2
S3
Okunan Renk
LOW LOW Red
LOW HIGH Blue
HIGH HIGH Green

 

Rgb ledimiz için  3! kadar yani 6 tane farklı durum oluşacağından algoritmada 6 tane koşul tanımlaması yapıyoruz.

RGB, RBG, GRB, GBR, BGR, BRG

Renk Tanıma Yazılımı
int kirmizi=11;
int yesil=10;
int mavi=6;
int S2=7;
int S3=8;
int outpin=4;
int kirmizi_algilama;
int yesil_algilama;
int mavi_algilama;
unsigned int pulseWidth;

void setup() {
Serial.begin(9600);
pinMode(kirmizi, OUTPUT);
pinMode(yesil, OUTPUT);
pinMode(mavi, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(outpin, OUTPUT);

}

void loop() {
digitalWrite(S2,LOW);
digitalWrite(S3,LOW);
pulseWidth = pulseIn(outpin,LOW);
kirmizi_algilama = pulseWidth/400. -1;
kirmizi_algilama = (255- kirmizi_algilama);
digitalWrite(S2,HIGH);
digitalWrite(S3,HIGH);
pulseWidth = pulseIn(outpin,LOW);
yesil_algilama = pulseWidth/400. -1;
yesil_algilama = (255- yesil_algilama);
digitalWrite(S2,LOW);
digitalWrite(S3,HIGH);
pulseWidth = pulseIn(outpin,LOW);
mavi_algilama = pulseWidth/400. -1;
mavi_algilama = (255- mavi_algilama);

if(kirmizi_algilama > yesil_algilama && yesil_algilama > mavi_algilama){
kirmizi_algilama =255;
yesil_algilama = yesil_algilama/2;
mavi_algilama = 0;

}
if(kirmizi_algilama > mavi_algilama && mavi_algilama > yesil_algilama){
kirmizi_algilama = 255;
mavi_algilama = mavi_algilama/2;
yesil_algilama = 0;

}
if(yesil_algilama > kirmizi_algilama && kirmizi_algilama > mavi_algilama){
yesil_algilama =255;
kirmizi_algilama = kirmizi_algilama/2;
mavi_algilama = 0;

}
if(yesil_algilama > mavi_algilama && mavi_algilama > kirmizi_algilama){
yesil_algilama =255;
mavi_algilama = mavi_algilama/2;
kirmizi_algilama = 0;

}
if(mavi_algilama > kirmizi_algilama && kirmizi_algilama > yesil_algilama){
mavi_algilama =255;
kirmizi_algilama = kirmizi_algilama/2;
yesil_algilama = 0;

}
if(mavi_algilama > yesil_algilama && yesil_algilama > kirmizi_algilama){
mavi_algilama =255;
yesil_algilama = yesil_algilama/2;
kirmizi_algilama = 0;

}

mavi_algilama =mavi_algilama *.5;
yesil_algilama = yesil_algilama * .75;
Serial.print(kirmizi_algilama);
Serial.print(" , ");
Serial.print(yesil_algilama);
Serial.print(" , ");
Serial.print(mavi_algilama);
Serial.print(" , ");
analogWrite(kirmizi, kirmizi_algilama);
analogWrite(yesil,yesil_algilama);
analogWrite(mavi, mavi_algilama);

delay(250);

}

Arduino ile renk ayırma otomasyon projemize aşağıdaki sayfadan bakabilirsiniz. 

Arduino ile Renklerine Göre Ürünleri Ayıklama Robotu Yapımı

Bunlar da İlgini Çekebilir

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

  1. Abbas Kara

    iyi günler tcs3200 renk sensörüyle yazdığınız kodu kullandığımda seri portta hep aynı değerleri görüyorum sizce ne yapmam gerekli

  2. Özgür Özdemir

    merhaba tcs 34725 sensörü ile 34200 olan bir devreyi kurabilirmiyim ACİLL

  3. Gökberk

    Merhaba Dediğinizi gibi bağlantıları yaptık ama hep yeşil yanmakta ve diğer renkleri algılamıyor
    oe bacagını nereye bağlantı yapılacıgını bulamadık onunla bir alakası olabilir mi ?

    1. Sezgin GÜL

      renk tonlarına göre değerler değiştiğinden, sensörü renk değerlerine göre kalibre etmeniz gerekiyor. Sensörü rengin üzerine tutun ve serial monitöre değerleri yazdırın o değerleri kodda belirtin.

  4. batuhan

    merhaba hocam ; devreyi kurdum kod yüklemesini gerçekleştirdim lakin sadece yeşil yanıyor sürekli olarak farklı renk göstersemde boşta bıraksamda ne yapmalıyım , şimdiden çok teşekkür ediyorum 🙂

  5. Oguzalp

    Sezgin abi bu kodda sarı renk algıladığında yeşil isik obur renkler algilandiginda kirmizi isik nasil ayarlanir

  6. Zeki Duhan Dinçer

    iyi günler tcs3200 renk sensörüyle yazdığınız kodu kullandığımda seri portta hep aynı değerleri görüyorum sizce ne yapmam gerekli kısacası tcs3200 ü okuyamiyor lütfen yardımcı olurmusunuz projemiz var

  7. tuba

    iyi günler tcs3200 renk sensörüyle yazdığınız kodu kullandığımda seri portta hep aynı değerleri görüyorum sizce ne yapmam gerekli

  8. Ömer Faruk Sarıkaya

    Hocam iyi günler öncelikle. Bende TCS3200 var ve bu sensöre göre LCD bağlantısını anlatırmısınız hangi pin hangi pine ?

    1. Sezgin GÜL

      bu projede lcd ye yazdırmıyor kod. lcd kullanırsanız örnek lcd kodlarını bu koda entegre edebilirsiniz.

      1. Ömer Faruk Sarıkaya

        Kod ekliycem ama örnek bağlantı şemasını bulamıyorum lcd için

  9. sabit

    iyi günler sezgin bey ben renk sensörünü kullanarak robot kolun renklere göre cisimleri ayrıştırmasını istiyorum ve sizin verdiğiniz yazılımda renkler okunduktan sonra led yanması yerine ben bu bilgiyi arduıno sayesinde robot kola vermek istiyorum yazılımda ne gibi değişiklikler yapsam daha iyi olur.

  10. Ömer POLAT

    red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
    bu kodu açıklayabilirmisiniz ?

    1. Sezgin GÜL

      out çıktısı HIGH’ a eşit ise yani denklik doğru ise LOW, eşit değil yani out değeri LOW ise HIGH yap.
      Yani soru işaretinin anlamı, durumun doğru veya yanlış olmasına göre başka değere eşitleme işlemini yapar.

  11. İsmail

    Banada bir yardımcı olurmusunuz renksensörü ile hareket sensörünü aynanda kontrol etmek istiyorum ama renk sensörüm bir çok renge değil sadece sarı renge odaklanıp sarı rengi görmeme olasılığı yükseldikçe buzzerin çok ötmesini istiyorum birçoğu tamam ama renk sensörüme göre bi türlü kod bulamıyorum

    1. Sezgin GÜL

      Tcs34725 bu model renk sensörünü kullanmanızı tavsiye ederim . Sorunsuz ölçüm yapar. Sizdeki hangi model ?

  12. Baran

    Hocam merhaba . Yapmak istediğim bir proje için sadece gümüş rengini algılatmak istiyorum nasıl bir sensör kullanmalıyım boyutu küçük olmalı .

    1. Sezgin GÜL

      Tcs34725 rgb renk sensörünü tavsiye ederim.

  13. Caner

    5 gündür Arduino Uno ile 6 renk (kırmızı,yeşil,mavi,sarı,turkuaz,mor) okuyabilen bir program yapmaya çalışıyorum . Lütfen sarı, turkuaz ve moru algılayan örnek programı gönderin. Kafayı yemek üzereyim.

    1. Sezgin GÜL

      bu projedeki renk sensörünü kullanın >> https://www.robimek.com/sesli-renk-okuyucu-robot-yapimi/
      projede sarı kırmızı yeşil mavi renklerin algılaması var. başka renk eklemek isterseniz serial monitörü açın ve sensörü rengin üzerine tutun. rengin r g b değerleri ekranda görülecektir. rengin tonlarına göre bir iki ölçüm yapın bu ölçümlerin alt ve üst sınırını yazın. örneğin r değeri minimum 1.3 maksimum 1.8 olduysa if ile bu değerleri belirtin. bu şekilde renkleri ekleyebilirsiniz.

  14. ONUR

    kullandığım RGB ortak katotlu bu kodları kullanıyorum
    fakat devre gerektiği gibi çalışmıyor lütfen hatamı söylermisniz..

    int kirmizi = 11;
    int yesil = 10;
    int mavi = 6;
    int S2 = 7;
    int S3 = 8;
    int outpin = 4;
    int kirmizi_algilama;
    int yesil_algilama;
    int mavi_algilama;
    unsigned int pulseWidth;

    void setup() {
    Serial.begin(9600);
    pinMode(kirmizi, OUTPUT);
    pinMode(yesil, OUTPUT);
    pinMode(mavi, OUTPUT);
    pinMode(S2, OUTPUT);
    pinMode(S3, OUTPUT);
    pinMode(outpin, INPUT);

    }

    void loop() {

    digitalWrite(S2, LOW);
    digitalWrite(S3, LOW);
    pulseWidth = pulseIn(outpin, LOW);
    kirmizi_algilama = pulseWidth / 400. – 1;
    kirmizi_algilama = (255 – kirmizi_algilama);
    digitalWrite(S2, HIGH);
    digitalWrite(S3, HIGH);
    pulseWidth = pulseIn(outpin, LOW);
    yesil_algilama = pulseWidth / 400. – 1;
    yesil_algilama = (255 – yesil_algilama);
    digitalWrite(S2, LOW);
    digitalWrite(S3, HIGH);
    pulseWidth = pulseIn(outpin, LOW);
    mavi_algilama = pulseWidth / 400. – 1;
    mavi_algilama = (255 – mavi_algilama);

    Serial.print(kirmizi_algilama);
    Serial.print(” , “);
    Serial.print(yesil_algilama);
    Serial.print(” , “);
    Serial.println(mavi_algilama);
    Serial.println(“”);
    analogWrite(kirmizi, kirmizi_algilama);
    analogWrite(yesil,yesil_algilama);
    analogWrite(mavi, mavi_algilama);

    if (kirmizi_algilama>mavi_algilama && kirmizi_algilama > yesil_algilama) {

    digitalWrite(kirmizi, LOW);
    digitalWrite(mavi, HIGH);
    digitalWrite(yesil, HIGH);

    }

    if (yesil_algilama>mavi_algilama && yesil_algilama > kirmizi_algilama) {

    digitalWrite(kirmizi, HIGH);
    digitalWrite(mavi, HIGH);
    digitalWrite(yesil, LOW);

    }

    if (mavi_algilama>kirmizi_algilama && mavi_algilama > yesil_algilama) {

    digitalWrite(kirmizi, HIGH);
    digitalWrite(mavi, LOW);
    digitalWrite(yesil, HIGH);

    }

    if(kirmizi_algilama > yesil_algilama && yesil_algilama > mavi_algilama){
    kirmizi_algilama =255;
    yesil_algilama = yesil_algilama/2;
    mavi_algilama = 0;

    }
    if(kirmizi_algilama > mavi_algilama && mavi_algilama > yesil_algilama){
    kirmizi_algilama = 255;
    mavi_algilama = mavi_algilama/2;
    yesil_algilama = 0;

    }
    if(yesil_algilama > kirmizi_algilama && kirmizi_algilama > mavi_algilama){
    yesil_algilama =255;
    kirmizi_algilama = kirmizi_algilama/2;
    mavi_algilama = 0;

    }
    if(yesil_algilama > mavi_algilama && mavi_algilama > kirmizi_algilama){
    yesil_algilama =255;
    mavi_algilama = mavi_algilama/2;
    kirmizi_algilama = 0;

    }
    if(mavi_algilama > kirmizi_algilama && kirmizi_algilama > yesil_algilama){
    mavi_algilama =255;
    kirmizi_algilama = kirmizi_algilama/2;
    yesil_algilama = 0;

    }
    if(mavi_algilama > yesil_algilama && yesil_algilama > kirmizi_algilama){
    mavi_algilama =255;
    yesil_algilama = yesil_algilama/2;
    kirmizi_algilama = 0;
    }

    delay(250);

    }

  15. ONUR

    Ben bu projede ortak anotlu bir RGB kullanıyorum devre doğru çalışmıyor,
    RGB’nin anot veya katot olması durumunda kodlarda değişiklik yapmamız
    gereklimi ?

    1. Sezgin GÜL

      ortak anot ise low olduğunda renk yanar. buradaki kod ortak katota göre. yani high olan kısımları low, low olanları da high yaparsan anot rgb ye uyarlamış olursun.

  16. emine neslihan demir

    // Coder : Sezgin Gül
    #include // 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 // 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 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)) { // 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);
    }
    Tcs 34725 hata veriyor sebebi ne olabiir?
    Lütfen çok acilll…

    1. Sezgin GÜL

      sensörün pinlerini doğru taktığınıza emin misiniz. Yazılım kısmında sorun yok. Bağlantılarınızı tekrar kontrol edin.

  17. emine neslihan demir

    Tcs3475_Gani_1× was not declared in this scope
    Hata nerede?

  18. ayşe

    merhaba bağlantılar doğru kodu kopyaladım yapıştırdım hata yok ama seri portta sürekli sabit 256 , 192 ,58 gibi değerler okuyor.Hangi rengi göstersem sonuç aynı acaba renk sensörüm mü bozuk ?

    1. Fatih

      bende aynı hatayı aldım aşağıdaki linkdeki kodu deneyince daha verimli bi sonuç aldım bi deyni istersenzi
      gelecegiyazanlar.turkcell.com.tr/konu/arduino/egitim/arduino-102/yuzey-renklerinin-algilanmasi

  19. emine neslihan demir

    Son bir şey daha arduino da hangi pine hangi pin i takmalıyım? Breadboarda renk sensörünün hiç bir pinini bağlamayacak mıyım?

    1. Sezgin GÜL

      Breadboarda taksanız da zaten oradan arduinoya bağlantı yapmanız gerekir. Yani breadboard şart değil sadece bağlantı yapmanızı kolaylaştırır. Dediğim gibi 3.3v – 3.3v a gnd gnd ye scl analog 5 , sda analog 4 pinine takın.

      1. emine neslihan demir

        Verdiğiniz bilgiler için çok teşekkür ederim…

      2. emine neslihan demir

        Biz zaten arduino ile breadboard arasında bağlantı kurmuştuk. Bu durumda renk sensörünü breadboarda bağlamak istesek breadboardda nereye bağlamalıyız? Breadboarda bağlamak istememizin sebebi devredeki diğer elemanların sizin söylediğiniz pinlerde takılı olanları var. Arduino uno kullandık devremizde.

        1. Sezgin GÜL

          aynı pini kullandığınız sadece enerji pinleri olmalı. onları da breadboard da seri bağlayıp ortak kablo ile arduino pini ile bağlantı kurun.

          1. emine neslihan demir

            Teşekkürler…

  20. emine neslihan demir

    Ceveplarınız için teşekkürler…

  21. emine neslihan demir

    google.com.tr/search?q=arduino+renk+alg%C4%B1lama+uygulamas%C4%B1&hl=tr&source=lnms&prmd=ivn&tbm=isch&sa=X&ved=0ahUKEwi74r3D9cfMAhXDSBQKHXhMDgkQ_AUIBygB&biw=1280&bih=800#hl=tr&tbm=isch&q=arduino+renk+alg%C4%B1lama+uygulamas%C4%B1+devresi++proje+hocam&imgrc=V6JxRNHxK7bdoM%3A
    Bu linkten devremizi görebilirsiniz.
    Nerede hata yapıyorum?

    1. Sezgin GÜL

      yukarıda yazdığım pinleri arduinoya bağlamanız yeterli.

      1. emine neslihan demir

        Son bir şey daha arduino da hangi pine hangi pin i takmalıyım? Breadboarda renk sensörünün hiç bir pinini bağlamayacak mıyım?

  22. tolga

    Sarı, mor, pembe, turuncu bu renkleri’de RGB’ de
    nasıl elde edebilirim yardımcı olurmusunuz.

    1. Sezgin GÜL

      buradaki projede sarı ve turuncu tanımı var diğerlerini de serial monitördeki değerlere göre koşula ekle.

      1. emine neslihan demir

        TCS34725 renk sensöründe 7 adet giriş var fakat içerisinde gelen erkek header lar ın 8 adet girişi var.Erkek headerleri renk sensörüne nasıl takacağız? ve hangi girişler kullanılıyor? led, ınt, sda, scl, 3v3, gnd, vın? hangi giriş breadboarda, hangisi arduino uno’ya bağlanıyor?

        1. Sezgin GÜL

          sensör pinlerinden 3.3v, gnd, scl ve sda pinlerini kullanmanız yeterlidir Buradan örnek projeye bakabilirsiniz. https://www.robimek.com/sesli-renk-okuyucu-robot-yapimi/

          1. emine neslihan demir

            Peki o erkek headerleri o 7 girişe naıl takacagız? Fazladan olan yer hangi tarafta kalacak? Son olarak pinlerin hepsini arduino ya mı bağlayacağız?

  23. Onur

    Bir sorum olucaktıda ben bu projeyi yaptım fakat kırmızı led sürekli yanıyor bunu nasıl çözebilirim

  24. Serkan

    İyi günler ben tsc3200 renk sensöründe sarı rengi elde etme istiyorum yardım ederseniz sevinirim

  25. orhan

    iyi günler bu rgb sensörünün out çıkışından üretilen sinyaller haberleşme protokol verisimi yoksa kare dalga sayınımı saymalıyız ? bu sensörü assembly şeklinde kodlamam gerekiyorda.
    üretilen çıkışın nasıl oldugunu ögrenmem gerekiyor.

    1. Sezgin GÜL

      50% duty cycle ile kare dalga üretir.

  26. BAHADIR

    Merhabalar ,
    Paylaştığınız bu projeyi yapmaya çalıştım ama serial portta hep aynı değeri alıyorum. Bu sorunu nasıl çözebilirim.

    Teşekkürler

    1. Sezgin GÜL

      bu renk sensöründe yansıma probleminden kaynaklı aynı değer gösterebiliyor. Ama TCS34725 renk sensörü bu konuda oldukça iyidir . Sorunsuz renk algılıyor . Projesi burada mevcuttur >> https://www.robimek.com/sesli-renk-okuyucu-robot-yapimi/

      1. BAHADIR

        Teşekkür ederim. Peki bu problemi çözebilmenin yolu var mı önerebilceğiniz ?

        1. Sezgin GÜL

          değerleri seriale yazdırın. ona göre programa entegre edin. Ama dediğim gibi bu sensör algılamada iyi değil

  27. osman büte

    bu projede rgb led yerine dc motor sürüleblirmi acaba

    1. Sezgin GÜL

      Renklere göre dc motoru kontrol edersiniz Yazılımı ona göre düzenlemelisiniz.

  28. İsmail

    Selam, Sezgin Bey
    boolean stringComplete = false; // whether the string is complete
    String inputString=””; // a string to hold incoming data
    int kirmizi=8;
    int mavi=9;
    void setup() {
    // initialize serial:
    Serial.begin(9600);

    pinMode(kirmizi,OUTPUT);
    pinMode(mavi,OUTPUT);
    // reserve 200 bytes for the inputString:
    // inputString.reserve(200);
    }

    void loop() {
    while (Serial.available()) {
    // get the new byte:
    char inChar = Serial.read();
    // add it to the inputString:
    inputString += inChar;
    // if the incoming character is a newline, set a flag
    // so the main loop can do something about it:
    if (inChar == ‘\n’) {
    stringComplete = true;
    }
    }
    // print the string when a newline arrives:
    if (stringComplete) {

    if (inputString == “yeşil\n”)
    {
    digitalWrite(mavi,HIGH);
    digitalWrite(kirmizi,LOW);
    }
    else if (inputString==”kırmızı\n”)
    {
    digitalWrite(kirmizi,HIGH);
    digitalWrite(mavi,LOW);
    }
    // Serial.println(“yazılan metin “+inputString);
    // clear the string:
    inputString = “”;
    stringComplete = false;
    }
    }

    sorun, alınan string verinin karşılaştırmasında. tek karakter kıyaslayınca çalışıyor. yeşil yerine ==”y\n” yazıldığında sorun yok. alınan veriyi println yapınca da gönderilen verinin aynısını yazıyor. sadece kıyaslama yapınca şart sağlanmıyor. bu arada c# ile denedim, serial monitör ile denedim netice aynı…string veri okumak bu kadar zor olmamalı. char veri projemiz için elverişli olmayabilir.

    1. Sezgin GÜL

      İsmail bey, sizin kodunuzda yeşil pin tanımlaması yapmamışsızsınız.Ayrıca yeşil print ederken ş harfi türkçe karakter olduğundan kabul etmez.

      1. İsmail

        yeşil led olduğu için denemede yeşil yazdım. mavi pin var yukarıda. esas sorum; seri porttan gelen metni örneğin kırmızı kelimesini olduğu gibi sorgulayamam mı? c# tan “kirmizi” şeklinde mi göndermem gerekir?

        1. İsmail

          Sorun çözüldü! Şükür. Sorgulama yapılacak kelimeyi İngilizce karakterlerle değiştirince oldu. yesil, kirmizi…
          Teşekkürler Sezgin Bey.

          1. Sezgin GÜL

            Rica ederim İsmail Bey, İyi çalışmalar.

  29. Ahmet

    direnc.net/Arduino-Renk-Tanima-Sensoru-GY-31,PR-22792.html

    Arduino Renk Tanıma Sensörü GY-31 böyle bir renk tanıma sensörü kullansam olur mu acaba ?

    1. Sezgin GÜL

      Olur tabiki de aynı sensörler zaten

  30. Tevrat

    Sarı renk algılayabilir mi ?

    1. Sezgin GÜL

      Tabi algılayabilir. Renklerin yüzdelik karışım değerlerine bakarak yazılıma ekleyebilirsiniz.

  31. İsmail

    Selam, TCS3200 renk sensörü ile sadece 3 renk algılamak istiyorum (RGB). Fakat bunları algılarken sadece dijital çıkış almak istiyorum. Bu sensörün dijital çıkış uçları tam olarak hangileri? (s1, s2,s3, s4). yani kod kısmında şunu yapabilir miyim: Mavi algılandığında s3=High olur ben de ona göre ilgili cihazı devreye sokarım. Ya da kırmızı algılandığında s2=low olur; yine ona göre koşul içinde ilgili cihaz çalışır. datasheet kısmından tam olarak bunu anlayamadım. Bu sensörün tam olarak çıkış ucu hangisi veya hangileri? Hangi değerleri veriyor?
    Yardımcı olabilirseniz sevinirim.

    1. Sezgin GÜL

      merhaba İsmail, aşağıdaki gibi hangi durumda hangi renk okunuyor gösterildi. Yani if içine bu durumları yazarak gerçekleştiği halde rgb de o rengi yakabilirsin.
      S2 S3 Okunan Renk
      LOW LOW Red
      LOW HIGH Blue
      HIGH HIGH Green

      1. İsmail

        Teşekkürler Sezgin Bey.