back to top

TCS3200 ve Arduino ile Renk Algılama Uygulaması

Herkese merhabalar!

Bu proje yazısında sizlerle beraber TCS3200 renk sensörünü yakından tanıyacağız ve LCD display ile beraber kullanarak bir proje gerçekleştireceğiz. Projeye geçmeden önce TCS3200’ün iç yapısına ve çalışma mantığına bir göz atalım.

TCS3200 Nasıl Çalışır?

TCS3200, oluşturduğu verileri fotodiyotlar ve bir akım-frekans dönüştürücüsü yardımıyla sağlıyor diyebiliriz. Sensör, üzerine gelen ışığın şiddetiyle orantılı bir frekansta kare dalga üretiyor, biz de bu kare dalgayı kullanarak verileri alıyor olacağız. Kodumuzda pulseIn() fonksiyonunu kullanarak gelen dalgadaki HIGH veya LOW sürelerini elde edeceğiz.

Peki sensör renkleri nasıl ayırt ediyor? Burada devreye fotodiyotların üzerinde bulunan filtreler giriyor. Sensörün yapısındaki 8×8 diziminde bulunan fotodiyotların 16’sı kırmızı, 16’sı mavi, 16’sı yeşil filtreye sahip, geriye kalan 16 fotodiyotta ise filtre bulunmuyor. Bu fotodiyotları kontrol etmek için sensörün üzerindeki S2 ve S3 pinlerini kullanacağız. Örneğin; kırmızı rengi belirlemek için S2 ve S3’ü lojik-0 konumuna getirerek işlem yapmamız gerekecek. Bu sayede sensörü kullandığımız yerdeki kırmızı rengin yoğunluğu hakkında bilgi sahibi olmuş olacağız. Aynı işlemi aşağıdaki tabloya göre yeşil ve mavi renkleri için de uygulayacağız. Bu sayede RGB(Kırmızı-Yeşil-Mavi) değerleri elde etmiş olacağız.

 

Sensörün üzerindeki S0 ve S1 pinleri de çıkış frekansını ölçeklendirmeye yarıyor. Biz bu ölçeği S0 “HIGH” ve S1” LOW” olacak şekilde %20 düzeyinde tutacağız. OUT pini ile de verileri alacağız. Tüm bu pinleri Arduino’nun dijital giriş-çıkışlarına bağlayarak kullanacağız.

Sensörün üzerinde 4 adet de beyaz led var. Bu ledler daha sağlıklı veri elde etmemiz için konmuş yardımcı elemanlar diyebiliriz. TCS3200 sensörü ile yuvalı ve yuvasız olarak karşılaşabilirsiniz. Bu sensörler arasında kullanımı açısından herhangi bir fark yoktur. Yuvalı olan sensörde çip, dış ortamdan daha az etkilenmesi için bir yuvanın içinde bulunur.


TCS3200 ile Renk Algılayıcısı

TCS3200 ile aldığımız değerleri 2×16 LCD ekran üzerinden göreceğimiz bir proje gerçekleştireceğiz. Aynı zamanda belirlediğimiz değer aralıklarına göre belli renkleri algılayarak LCD ekrandan okuyabileceğiz. Eğer 2×16 LCD display kullanımını bilmiyorsanız şu yazımıza göz atabilirsiniz.

Gerekli Malzemeler 

Devre Şeması

Kalibrasyon

Projede kullandığımız TCS3200 sensöründen alacağımız değerler birçok etkene göre değişiklik gösterebilir. Bu etkenler ortamın ışık yoğunluğu, sensörün yuvalı olup olmaması olabilir. Bu yüzden bizim kullandığımız kodu direkt olarak projenize uygulamak istediğinizde farklı sonuçlar alabilirsiniz.

Bu oldukça normal bir durum, o yüzden bu aşamada yalnızca sensör değerlerini serial monitörde görebileceğimiz bir kod kullanacağız. Bu sayede sensörümüzden aldığımız çıktıları görmüş olacağız.

Ben bu kodu kullanarak ilk testimi beyaz kağıt üzerinde yaptım. Sağladığımız değerler düştükçe renk yoğunluğu artıyor demektir. Beyaz kağıttan aldığımız veriler beklediğimiz gibi 3 renk için de düşük çıktı.

Aynı testi hızlıca ana renkler öncelikli olmak üzere bazı ara renkler için de uyguladım. Bu testleri farklı renkteki kağıtları kullanarak yaptım. Testlerin sonucunda sensörün renkler üzerinde hangi değerlerde tepkiler verdiğini görmüş olduk.

Bu gözlemleri yapmamızın amacı kodumuzu yazarken renkler için bir eşik değer belirlemekti.

Hangi değerler ne ifade ediyor bunu görmüş olduk. Örneğin kırmızı renk için eşik değerini 100 olarak belirlediğimizi düşünelim. Kodumuzu yazarken bu değeri göz önünde bulundurarak 100’ün altında değer aldığımız nesnelerde kırmızı yoğunluğunun yüksek seviyelerde olduğunu çıkarabiliriz.

Yani bu gözlemler, elimizdeki değerler ile ilgili fikir sahibi olmamızı sağlamış olacak. Tüm bu işlemler için aşağıdaki kodu kullanmamız gerekiyor.

//75.101.132.229
#define s0 8 //Bağladığımız pinlere göre tanımlamalarımızı yapıyoruz
#define s1 9
#define s2 10
#define s3 11
#define sensorOut 12
int K, Y, M = 0; //3 ana renk için değişken tanımlıyoruz
void setup() {
  pinMode(s0, OUTPUT); //S0, S1, S2 ve S3 pinlerini OUTPUT olarak tanımlıyoruz
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);
  pinMode(s3, OUTPUT);
  pinMode(sensorOut, INPUT); //OUT pinini INPUT olarak tanımlıyoruz
  digitalWrite(s1, LOW); //Frekans ölçeğimizi %20 olarak tanımlıyoruz
  digitalWrite(s0, HIGH);
  Serial.begin(9600);
}
void loop() {
  digitalWrite(s2, LOW); //Kırmızıyı filtrelemek için
  digitalWrite(s3, LOW);
  K = pulseIn(sensorOut, LOW); //OUT pini üzerindeki LOW süresini okur
  Serial.print("Kırmızı= ");
  Serial.print(K); //Kırmızı için aldığımız değeri serial monitöre yazdır
  Serial.print("  ");
  delay(50); //50 milisaniye bekle
  digitalWrite(s2, HIGH); //Yeşili filtrelemek için
  digitalWrite(s3, HIGH);
  Y = pulseIn(sensorOut, LOW); //OUT pini üzerindeki LOW süresini okur
  Serial.print("Yeşil= ");
  Serial.print(Y); //Yeşil için aldığımız değeri serial monitöre yazdır
  Serial.print("   ");
  delay(50); //50 milisaniye bekle
  digitalWrite(s2, LOW); //Maviyi filtrelemek için
  digitalWrite(s3, HIGH);
  M = pulseIn(sensorOut, LOW); //OUT pini üzerindeki LOW süresini okur
  Serial.print("Mavi= ");
  Serial.print(M); //Mavi için aldığımız değeri serial monitöre yazdır
  Serial.println();
  delay(50); //50 milisaniye bekle
}

Proje Kodu

Şimdi proje için ihtiyacımız olan koda geçiyoruz. Bu kodda basit bir şekilde aldığımız değerleri LCD ekrana yazdıracağız. Belli kriterlere uyan renklerimizi “Algılanan Renk” şeklinde LCD ekranımızda göreceğiz.

Hem değerleri hem de algılanan rengi 2×16’lık bir ekranda görmemiz mümkün değil. Bu yüzden ekranda sırasıyla değerleri ve ardından bu değerlerin sonucunda ortaya çıkan rengi okuyacağız. Ara renkleri belirlerken aşağıdaki renk diyagramından yararlandım.

Algılanan rengi belirlerken kullandığımız değerleri kendi sensörünüzden aldığınız değerlere göre değiştirin. Aksi halde doğru değerleri okuyamayabilirsiniz.

//75.101.132.229
#include <LiquidCrystal.h> //LCD kütüphanesini kodumuza dahil ediyoruz
#define s0 8 //Bağladığımız pinlere göre tanımlamalarımızı yapıyoruz
#define s1 9
#define s2 10
#define s3 11
#define sensorOut 12
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); //LCD pinlerini tanımlıyoruz
int K, Y, M = 0; //3 ana renk için değişken tanımlıyoruz
void setup() {
  lcd.begin(16, 2);
  pinMode(s0, OUTPUT); //S0, S1, S2 ve S3 pinlerini OUTPUT olarak tanımlıyoruz
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);
  pinMode(s3, OUTPUT);
  pinMode(sensorOut, INPUT); //OUT pinini INPUT olarak tanımlıyoruz
  digitalWrite(s1, LOW); //Frekans ölçeğimizi %20 olarak tanımlıyoruz
  digitalWrite(s0, HIGH);
  Serial.begin(9600);
}
void loop() {
  lcd.print("K=");
  digitalWrite(s2, LOW); //Kırmızıyı filtrele
  digitalWrite(s3, LOW);
  K = pulseIn(sensorOut, LOW); //OUT pini üzerindeki LOW süresini okur
  Serial.print("Kırmızı= ");
  Serial.print(K); //Kırmızı için aldığımız değeri serial monitöre yazdır
  Serial.print("  ");
  lcd.print(K); //Kırmızı için aldığımız değeri LCD ekrana yazdır
  lcd.print("  ");
  lcd.setCursor(7, 0); //İmleci 7. sütuna al
  delay(50); //50 milisaniye bekle
  lcd.print("Y=");
  digitalWrite(s2, HIGH); //Yeşili filtrele
  digitalWrite(s3, HIGH);
  Y = pulseIn(sensorOut, LOW); //OUT pini üzerindeki LOW süresini okur
  Serial.print("Yeşil= ");
  Serial.print(Y); //Yeşil için aldığımız değeri serial monitöre yazdır
  Serial.print("   ");
  lcd.print(Y); //Yeşil için aldığımız değeri LCD ekrana yazdır
  delay(50);
  lcd.setCursor(4, 1); //İmleci 2. satır 4. sütuna taşı
  lcd.print("M=");
  digitalWrite(s2, LOW); //Maviyi filtrele
  digitalWrite(s3, HIGH);
  M = pulseIn(sensorOut, LOW); //OUT pini üzerindeki LOW süresini okur
  Serial.print("Mavi= ");
  Serial.print(M); //Mavi için aldığımız değeri serial monitöre yazdır
  Serial.println();
  lcd.print(M); //Mavi için aldığımız değeri LCD ekrana yazdır
  lcd.setCursor(0, 0);
  delay(1000); //1000 milisaniye bekle
  //Renk değerlerini 1 saniye boyunca ekranda göreceğiz
  lcd.clear(); //Ekranı temizle
  delay(150); //150 milisaniye bekle
  lcd.setCursor(1, 0); //İmleci 1. sütuna al
  lcd.print("Algilanan Renk");
  lcd.setCursor(2, 1); //İmleci 2. satır 2. sütuna al
  //Kalibrasyon bölümünde elde ettiğimiz değerleri bu kısımda kullanacağız
  if (K < 70 && M < 70 && Y < 70) //Eğer tüm renklerin yoğunluğu yüksekse: Beyaz
  {
    Serial.print("Renk = Beyaz   ");
    lcd.print("Beyaz");
  } else if (K < 100 && Y < M && abs(K - Y) < 20)
  //Kırmızı yoğunluğu yüksek ve yeşille arasındaki değer 20'den azsa: Sarı
  {
    Serial.print("Renk = Sarı   ");
    lcd.print("Sari");
  } else if (K < 100 && M < Y && abs(M - K) < 20)
  //Kırmızı yoğunluğu yüksek ve mavi ile arasındaki değer 20'den azsa: Magenta
  {
    Serial.print("Renk = Magenta   ");
    lcd.print("Magenta");
  } else if (Y < 130 && Y < M && Y < K)
  //Yeşil yoğunluğu belli bir seviyenin üstünde ve kırmızı-maviden daha yoğunsa: Yeşil
  {
    Serial.print("Renk = Yeşil   ");
    lcd.print("Yesil");
  } else if (M < 100 && M < Y && M < K)
  //Mavi yoğunluğu belli bir seviyenin üstünde ve yeşil-kırmızıdan daha yoğunsa: Mavi
  {
    Serial.print("Renk = Mavi   ");
    lcd.print("Mavi");
  } else if (K < 100 && K < Y && K < M)
  //Kırmızı yoğunluğu belli bir seviyenin üstünde ve yeşil-maviden daha yoğunsa: Kırmızı
  {
    Serial.print("Renk = Kırmızı   ");
    lcd.print("Kirmizi");
  } else {
    Serial.print("Renk algılanamadı   "); //Belirlediğimiz kıstaslara uymayan diğer renkler
    lcd.print("---");
  }
  Serial.println(); //Serial monitörde bir satır aşağı geç
  delay(1000); //1000 milisaniye bekle
  lcd.clear(); //LCD ekranı temizle
  delay(150);
}

Hadi deneyelim!

Kod aşamasıyla beraber projemizi bitirmiş olduk. Başka projelerde buluşmak dileğiyle, hoşça kalın!

Son Çıkan Yazılar

80 YORUMLAR

    • Merhaba, bağlantıları doğru şekilde yaptıktan ve sensörün verdiği değerleri test ettikten sonra herhangi bir sorun olacağını sanmıyorum. Bir problemle karşılaşırsanız buraya yazabilirsiniz, yardımcı olmaya çalışırım her zaman. 🙂

    • Hayır, yazıdaki kısımları adım adım gerçekleştirdikten sonra sıkıntı çıkmayacaktır. Yine de bir problem yaşarsanız yazabilirsiniz.

    • Kalibrasyon bölümünde bahsedildiği gibi kendi sensör değerlerinize göre koddaki değerlerde oynama yaparsanız sorun çözülecektir.

  1. Merhaba aldığım değerler çok düzensiz beyaz kağıtta bir okuttuğumda 10000 10000 10000 değerlerini aldığımda diğer okuttuğumda 8000 lerde sonrakinde 15000 lerde geziyor. bu dalgalanmayı nasıl azaltabilirim.

    • Merhaba, projeyi yaparken aynı renkteki farklı ortamlarda okuma sırasında bu dalgalanmalarla ben de karşılaştım. Kullandığımız sensör en ufak değişimden bile etkilenebiliyor, bu da aynı renkte görünen cisimlerden farklı değerler okumamıza sebep oluyor. Bu yüzden tüm testleri aynı ortamda, özdeş kağıtlar üzerinde yaptım. Okuma sırasında sensörü tuttuğunuz mesafeyi de sabit tutmaya çalışın.
      Ayrıca sensör değerleriniz yüksek çıktığı için kodda bu değerleri 100’e bölerek çalışırsanız işinizi kolaylaştıracaktır.

      • 100 e bölsem bile veriler çok dengesizdi. çok büyük dalgalanmalar vardı. sensör üzerindeki GND bağlantısını kestiğimde tüm veriler daha stabil bir hale geldi. Nedenini bilmiyorum ama şu an sorunsuz 😀 yardım için teşekkürler

  2. selamun aleyküm. Bu kalibrasyon bölümünde ki kodu atmasak da direkt proje kodunu üzerinden işlem yapsak, herhangi bir sorun ile karşılaşır mıyız.

    • Proje kodu üzerinden de sensör üzerinden aldığınız değerleri görebilirsiniz. Kalibrasyon bölümündeki kod yalnızca sensör değerlerini test etmeye yarayan bir kod, aynı testi proje kodu üzerinden de yapabilirsiniz, problem olmaz.

  3. Peki hocam. Kod da ki şu bölümün anlamı nedir… else if(K<100 && Y<M && abs(K-Y)<20) bazı renkleri gösteriyo örneğin magenta,t uruncu gibi renkleri algılıyor ama yeşil, mavi gibi renkleri algılamıyor. Acaba bu bölümde değişiklik mi yapmak gerekir..

    • Kodun algoritması renkleri özelden genele test edecek şekilde gidiyor. Yani öncelikli olarak rengin beyaz olup olmamasına degilse ara renklere sonrasında ana renklere bakıyor. Okuttuğunuz nesneden magenta için belirlediğimiz koşullarda değerler aldığınız için magenta olarak gösteriyor. Bu koşulları değiştirerek çözüme ulaşabilirsiniz, çünkü yazıda da belirttiğim gibi her sensör aynı sonuçları vermiyor maalesef. Kalibrasyon kısmındaki test aşamalarını da bu yüzden yaptık, farklı renkler üzerinden hangi değerleri aldığınıza bakarak bu koşullarda değişiklik yapmalısınız. Biraz deneme-yanılma gibi de düşünülebilir.

  4. İyi günler ben bi proje yapıyorum ve renk sensorunden 3 tane kullanmam gerekli tek arduinoda 3 tane sensorun bilgisini okuyup lcd ekrana yazdirabilirmiyim

    • Merhaba, 3 adet renk sensörü kullanacağınız bir projede Arduino Uno üzerindeki pin sayısı yetersiz gelecektir. Bu yüzden Arduino Mega gibi bir model kullanmanız gerekiyor. Onun dışında tek sensör için yaptığımız işlemleri diğer sensörlere de uygulayarak tüm sensör değerlerini tek Arduino üzerinden alabilirsiniz.

  5. Merhaba Alperen bey,
    Bu projenizi çok beğendim, renklerle ilgili çalışıyorum zaman içinde yaptığım renk çalışmalarından oluşan fiziksel renk arşivim var ve yeni bir renk çalışması olduğunda bu arşive bakıp aynı renk veya yakını bir renk varmı diye arşivi tarayıp çalışmayı öyle yapıyorum . Arşivden daha önce çalışılmış olan bir rengi bulmak bazen çok zaman alıyor. Bu devre ile yüzlerce farklı rengi okutarak bilgisayarda bir renk arşivi oluşturup sensöre okutulan herhangi bir nesnenin renginin veya ona yakın olan renklerin eğer oluşturduğumuz arşivde varsa bulunmasına yönelik bir geliştirme yapılabilir mi ?

    • Merhaba 🙂 Geri dönüşünüz için teşekkür ederim. Bu çalışmadaki sensör hobi projelerinde ve belli başlı renkleri ayırt etmede başarılı olsa da çok hassas ölçümlerde istediğimiz sonucu vermeyecektir. Renk arşivi gibi detaylı bir çalışmada her renkten farklı tonların olduğunu da düşünürsek hata payı oldukça yüksek olacaktır.

  6. proje kodunu yazınca karta yuklenırken sorun olustu yazıyo ve kodu yukleyince lcd ekranın ve renk sensorunun ısıgı yanıyo sadece renk sensorune tuttugumda hiçbisey olmuyo ve lcd ekranda birsey yazmiyo neden ?

  7. Proje kodunu yazınca karta yüklenirken sorun oluştu yaziyo ve kodu yükleyince lcd ekran ve renk sensörünün ışığı yazmıyo sadece renk sensorune tuttuğunda ise lcd ekranda hiçbişey yazmıyo kod mu bozuk yoksa sensor mu sebebi nedir başka bişey mi yapmam gerekli eksik bişey mi var

  8. Proje kodunu yazinca karta yuklenirken sorun olustu yaziyo ama arduinoyoyu bilgisayara baglayinca sadece lcd ekran ve renk sensorunun isigi yaniyo renk sensoru rengi algilayip ekrana yazmiyo kod mu bozuk yoksa renk sensorumu bunun haricinde renk sensorunun okuyup ekrana yazmasi icin yapmamiz gereken baska bisey mi var

    • Güç verdiğinizde lcd arka ışığı ve sensörün ledleri doğrudan yanar, bir şey okuyamama sebebiniz Arduino’ya kod yüklenememesi. Bunun birkaç sebebi olabilir, maker.robotistan.com/arduino-hata/ şu yazı problemi çözebilir. “Arduino Karta Yüklenirken Sorun Oluştu” başlığındaki durumları kontrol edin.

  9. Renk sensorunun algılayıp lcd ye yazdirmasinin haricinde bide bu projede led ve buzzer eklemem gerekiyo bunu nasıl yapabilirim yani demek istediğim şey renk sensoru algılayıp lcd ye yazdırdığı anda buzzer ses çıkaracak ve ledde algılanan renge gore renk yanacak bunun proje kodu ve bağlantısını nasıl yapabilirim?

    • Buzzerı basitçe kodun lcdye yazdırma kısmında aktif hale getirebilirsiniz. Buzzer kullanımı ve kodlarıyla ilgili şu yazı yardımcı olabilir: maker.robotistan.com/arduino-dersleri-9-buzzer-ile-ses-cikisi-alma-2/
      Led için de RGB bir ledden mi bahsediyorsunuz? Eğer öyleyse renkler için sensörden aldığımız değerleri RGB değerlere çevirmeniz gerekecektir. Fakat sensör çok stabil değerler vermeyebiliyor o yüzden doğrudan map fonksiyonu ile çevirmek doğru sonuçları vermeyebilir. Onun yerine belli başlı renkleri yansıtabilirsiniz, örneğin kırmızıyı algıladığımız kısımda ledinize (255,0,0) RGB değerlerini gönderirseniz led kırmızıya döner gibi. RGB led kullanımı ile ilgili de şu yazı yardımcı olacaktır: maker.robotistan.com/rgb-led-nedir-arduino-kontrolu/
      Ana renkler olan kırmızı, mavi, yeşil gibi renkler için ayrı ayrı ledler ekleyecekseniz tek yapmanız gereken kodda lcd ekrana yazdırdığımız renge göre bu ledleri aktif hale getirmek.

  10. Bi de tcs3200 ün sensor yuvasız olanını kullanıyorum renkleri algılamıştı lcd ekranda algılanan renk beyaz yazıp duruyor kodu kontrol ediyorum doğru ama yinede düzelmedi renk sensoru algılasa bile çok nadir algiliyo neden aceba sensor yuvasız olduğu için mi

    • Sizin kullandığınız sensörün verdiği değerlerle benim kullanmış olduğum değerler örtüşmediğinden kodunuzu düzenlemeniz gerekiyor, bu kısım bunun için. Yazıda da belirttiğim gibi proje kodunu doğrudan attığınızda sonuç beklediğiniz gibi çıkmayacaktır. Burada yapmanız gereken sensörünüzün verdiği değerlere göre koddaki ifli kısımların içindeki değerlerde değişiklikler yapmak. Sizin sensörünüz genel olarak düşük değerler verdiği için algılanan rengi sürekli olarak “beyaz” görüyorsunuz. Sensörü beyaza tuttuğunuzda aldığınız değerlere bakın, örneğin 20-30 civarı değerler alıyorsanız if(K<70 && M<70 && Y<70) değil de if(K<40 && M<40 && Y<40) şeklinde bir düzenleme yapabilirsiniz. Aynı şekilde diğer renklerde de testler yaparak diğer renklerin koşullarında da değişiklik yapın. Kodun bu kısmında iş size düşüyor, değerlerde oynamalar yaparak en doğru sonuca ulaşmaya çalışmalısınız.

  11. Kalibrasyonla ifli değerlerde değişiklik yaptım kırmızı mavi yeşil ve beyazı algıladı ama sarı ve magentayi alglamiyo sarı rengi tutunca mesela algılanan renk kırmızı diyor düzeltemedim değerleri değiştirmeye çalıştım yine olmadi cozemedim

  12. Tcs3200 renk sensoru ile tüm renkleri algılayabilirmişiz genelde kırmızı yeşil ve maviyi algılıyor bunun haricinde pempe kahverengi turuncu gibi diğer renkleri algilarmi koda mesela bu renkleride eklesek algılar mi yoksa sadece projede belirtilen renk kesişim kümesindeki renkleri mi algiilar

  13. Proje kodunda kırmızı sarı yeşil mavi beyaz ve magenta renkleri tanımlanmış tcs3200 renk algilama projesinde bunun haricinde diğer renkleri algılayabilir mi siyah turuncu mor kahverengi gibi renkleri algılayabilir mi

  14. Bide bu renk algilama uygulamasına led ekleyip algılanan rengin yanmasını istiyorum nasıl yapabilirim rgb ledi eklemek istiyorum buzzer ekledim sadece onun tek yaptığı şey ses cikarmak

    • Merhaba 🙂
      Eğer Arduino Uno ile yapacaksanız 2. sensör için pin sayısı yetersiz gelecektir ancak lcd ekranı I2C dönüştürücü yardımı ile kullanırsanız 2 sensörü tek Arduino Uno üzerinde kullanabilirsiniz. Kod kısmında da ilk sensör için yaptığımız işlemleri 2. sensör için de uygulayarak sensörünüzü kullanabilirsiniz.

  15. Bu projede servo motor kullanarak motorun ucuna çubuk takip sensörün algıladığı renkte dönmesini istiyorum nasıl yapabilirim örnek kod gönderme imkanımız var mi

    • Mor ve turuncu için aldığınız referans değerleri kullanarak koda eklemelisiniz. Benim size göndereceğim kod bir şey ifade etmeyecektir maalesef, çünkü aynı değerler olmayacaktır.

    • Merhaba, devrenin bağlantı şeması ve şemanın altında bağlantıların yazdığı bir tablo yazıda mevcut. Bunları takip ederek devrenizi kurabilirsiniz.

    • Merhaba, bizim kurduğumuz devre sensörün mantığının anlaşılması ve kullanılması ile ilgili bir örnekti. Günlük hayatta bazı nesneleri renklerine göre ayıracak sistemlerde bu sensör tercih edilebilir. Devreye hoparlör ve sd kart modülü ekleyerek sensörün okuduğu rengi hoparlör üzerinden aktarabilirsiniz. Sd kart modülüne renklerin olduğu ses dosyalarını atarak yapılabilir.

  16. Merhabalar,
    Sizin verdiğiniz kodu mblock programına uyarladım ve birkaç tane ara renk ekledim. Toplamda 10 renk için değer okudum. Bazı renklerin değerleri birbirine çok yakın olduğu için aralık belirledim. Örneğin; pembe için “69<K<77 ve 201<Y<212 ve 106<M<115 "gibi. Ama renkleri ne yazık ki algılamıyor sadece bekliyor bir hata da vermiyor. Ana renklerle sizin verdiğiniz şekilde ilk uyarladığımda çalışıyordu. Birkaç renk ekleyerek devam ettiğimde ilk rengi doğru okuyup sırasıyla diğer renklere geçiyor. Çözüm yolu olarak aralık değeri verdiğimde hiç okumamaya başladı. Sizce nerede hata yapıyor olabilirim? Bana yardımcı olursanız çok sevinirim. Teşekkürler.

  17. Arduino: 1.8.10 (Windows 10), Kart: “Arduino / Genuino Uno”

    renk: 74: 4: hata: ‘diğer’ ifadesinden önce nitelenmemiş kimliği bekleniyor

    renk: 79: 3: hata: ‘else’ öncesi kifayetsiz kimliği bekleniyor

    renk: 84: 3: hata: beklenen ‘nitelikten önce kimliği belirsiz kimliği’

    renk: 89: 4: hata: ‘diğer’ ifadesinden önce nitelenmemiş kimliği bekleniyor

    renk: 94: 5: hata: beklenen ‘kibar’ öncesi kimliği belirsiz kimlik

    renk: 100: 3: hata: ‘{‘ belirtecinden önce nitelenmemiş kimliği bekleniyor

    renk: 105: 4: hata: ‘Seri’ bir tür adı vermiyor

    renk: 106: 10: error: beklenen yapıcı, yıkıcı veya ‘(‘ belirtecinden önceki dönüşüm türü)

    renk: 107: 5: hata: ‘lcd’ bir tür isimlendirmiyor

    renk: 108: 11: error: beklenen yapıcı, yıkıcı veya ‘(‘ belirtecinden önce dönüşüm türü)

    renk: 109: 3: hata: ‘}’ belirtecinden önce beklenen bildirim

    “LiquidCrystal.h” için birden fazla kütüphane bulundu
    Kullanılıyor: C: \ Kullanıcılar \ sansür \ Masaüstü \ arduino-1.8.10 \ kütüphaneler \ LiquidCrystal
    Çıkış durumu 1
    ‘diğerinden önce beklenen niteliksiz kimlik

    Bu raporda daha fazla bilgi olacak
    “Derleme sırasında ayrıntılı çıktı göster”
    seçeneği Dosya -> Tercihler’de etkin.

    böle bir sorun hatası alıyorum boş bıratığınız else de duraksıyor program tam olarak bu şekilde
    }
    else
    {

    • Merhaba,
      ““LiquidCrystal.h” için birden fazla kütüphane bulundu” şu satırdaki problemi çözmek için kütüphanelerin bulunduğu kısımda aynı kütüphaneden birden fazla olup olmadığını kontrol eder misiniz?

  18. Merhabalar her iki kodu da alıp arduino ma atıyorum ama her seferinde hata veriyor ne yapmam gerek yada sadece vermiş olduğunuz 2. Kodumu kopyalayıp atmam gerek .
    Lütfen en kısa sürede cevap verirseniz sevinirim .şimdiden teşekkür ederim.

    • Merhaba, ilk kod yalnızca sensör değerlerini izlemek için, değerlere bağlı olarak ikinci kodda değişiklik yapabilirsiniz. Projeniz için yalnızca ikinci kodu atmanız gerekecek. İyi çalışmalar

  19. Merhaba öncelikle maker projeler için çok teşekkür ederim. Benim size sormak istediğim lcd ekranında yazan renkleri aynı zamanda sese çevirip hoparlörden dinleyebilir miyiz? Ayrıca sormak istediğim renkleri en uzak hangi mesafeden okuyabilir? Renk ile sensör arasındaki mesafe ne kadar olmalı? Yardımci olursanız çok sevinirim. iyi çalışmalar dilerim.

    • Merhaba, projeyi dediğiniz şekle çevirmek için hoparlör, sd kart ve sd kart modülü kullanabilirsiniz, bu sayede sd kart içine yüklediğiniz ses dosyalarını okutabilirsiniz. İnternet üzerinde birçok örneğini bulabilirsiniz. Kütüphane sayesinde oldukça kolay bir kullanımı vardır.
      Mesafe ile ilgili soru için verebileceğim net bir ölçü yok, fakat sonuçların tutarlı olması bakımından sensörü her nesne için aynı mesafede tutmaya dikkat etmelisiniz. Birkaç cm’lik bir mesafe, ayırt edici bir okuma için yeterli olacaktır, deneyerek ve sonuçları karşılaştırarak ideal bir mesafe bulabilirsiniz. İyi çalışmalar dilerim 🙂

  20. Merhabalar bu sensörü çizgi izleyen robot mantığı gibi buton vasıtasıyla seçtiğim rengi takip eden robot şeklinde nasıl geliştirebilirim kodlama ve donanım kısminda yardımcı olabilirmisiniz?

  21. iyi günler dilerim . internette gördüm araştırdım ama bir şey bulamadım. bilgisayar ekranındaki renkleri odaya yansıtıyordu. odanın rengi ormanda yeşil renk oluyor gökyüzünde mavi vs bunun için yardımınız olur mu ?

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz