Arduino Renk Bulan Proje

Merhaba arkadaşlar mcs3200 renk sensörü ile yapmış olduğum projemde renkli kağıtlar sensöre okutulur renk bilgisi lcd ekranda yazar ilgili led yanar ve servo önünde bulunan renk sıkalasında ilgili rengi göstermektedir.

Led görselinde karışım renkleri olduğunda iki led aynı anda yanmaktadır.

 

Özellikleri :
  • Giriş voltajı : 2.7 V-5 V
  • Arayüz : Dijital TTL
  • Programlanabilir ve tam ölçekli çıkış frekansı
  • Mikrodenetleyiciler ile doğrudan iletişim kurar.
  • Boyutları : 28.4×28.4mm

 

 

 

Büyüklük:

23.1 x 12.2 x 29 mm

Ağırlık:

9 g

Hız @4.8V:

0.1 sn/60°

Zorlanma Torku @6V:

1.3 kg•cm

Kablo Uzunluğu:

15 cm

 

 

Teknik Özellikler:
– ATmega328 Mikrodenetleyici
– 7-12V Giriş Voltajı
– 14 Dijital G/Ç Pini
– 6 PWM Çıkışı
– 6 ADC Girişi
– 16MHz Çalışma Frekansı
– 32KB Flash Hafıza

 

Özellikleri:

  • +5V ile çalışmaktadır.
  • Back Lighting özelliğine sahiptir.
  • LCD arka fon ışığı olmadan 4mA akım çekmektedir.
  • Boyutları 80x36x9.4mm’dir
  •  Çalışma sıcaklığı -20 ile +70 derece arasıdır.

 

* teknik bilgiler robotistan.com dan alıntıdır.

 

 

#include<Servo.h>
Servo servo1;


#include <LiquidCrystal.h>


//               (Rs, E, D4, D5, D6 ,D7)
LiquidCrystal lcd(5 , 6, 7 , 8 , 9 , 10);


#define S2 3
#define S3 4
#define sensorOut 2

#define kirmizi_led 12
#define yesil_led 13
int layer[3] = {A2, A1, A0};
int yogunluk = 0; // sıklık
int ortalama = 15; // ortalama
int r, g, b;
void setup() {
  lcd.begin(16, 2);
  servo1.attach(11);

  for (int i = 0; i < 3; i++)
  {
    pinMode(layer[i], OUTPUT);
  }
  pinMode(kirmizi_led, OUTPUT);
  pinMode(yesil_led, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  // Frekans ölçeklendirme değerini% 20 olarak ayarlama

  Serial.begin(9600);

  lcd.setCursor (0, 0);
  lcd.println("      RENK      ");
  lcd.setCursor (0, 1);
  lcd.println(" ALGILAMA PROJ. ");
  digitalWrite(kirmizi_led, LOW);
  digitalWrite(yesil_led, LOW);
  digitalWrite(layer[0], 0);
  digitalWrite(layer[1], 0);
  digitalWrite(layer[2], 0);

  for (int a = 0; a < 180; a++)
  {
    servo1.write(a);

    if ( a == 35)
    {
  lcd.clear();
      lcd.setCursor (0, 0);
      lcd.print("**");
      lcd.setCursor (0, 1);
      lcd.println("-----KIRMIZI----");
      digitalWrite(kirmizi_led, HIGH);
      digitalWrite(yesil_led, LOW);
      digitalWrite(layer[0], 0);
      digitalWrite(layer[1], 0);
      digitalWrite(layer[2], 0);
    }
    else if (a == 55 )
    {
      lcd.setCursor (0, 0);
      lcd.print("****");
      lcd.setCursor (0, 1);
      lcd.println("------SARI------");
      digitalWrite(kirmizi_led, LOW);
      digitalWrite(yesil_led, LOW);
      digitalWrite(layer[0], 0);
      digitalWrite(layer[1], 1);
      digitalWrite(layer[2], 0);
    }
    else if (a == 65)
    {
      lcd.setCursor (0, 0);
      lcd.print("******");
      lcd.setCursor (0, 1);
      lcd.println("------MAVI------");
      digitalWrite(kirmizi_led, LOW);
      digitalWrite(yesil_led, LOW);
      digitalWrite(layer[0], 0);
      digitalWrite(layer[1], 0);
      digitalWrite(layer[2], 1);
    }
    else if (a == 76)
    {
      lcd.setCursor (0, 0);
      lcd.print("********");
      lcd.setCursor (0, 1);
      lcd.println("------MOR-------");
      digitalWrite(kirmizi_led, HIGH);
      digitalWrite(yesil_led, LOW);
      digitalWrite(layer[0], 0);
      digitalWrite(layer[1], 0);
      digitalWrite(layer[2], 1);
    }

    else if (a == 90)
    {
      lcd.clear();
      lcd.setCursor (0, 0);
      lcd.println("*****************");
      lcd.setCursor (0, 1);
      lcd.println("*****************");
      digitalWrite(kirmizi_led, HIGH);
      digitalWrite(yesil_led, HIGH);
      digitalWrite(layer[0], 1);
      digitalWrite(layer[1], 1);
      digitalWrite(layer[2], 1);

    }
    else if (a == 100)
    { lcd.clear();
      lcd.setCursor (0, 0);
      lcd.print("**********");
      lcd.setCursor (0, 1);
      lcd.println("------PEMBE-----");
    digitalWrite(kirmizi_led, HIGH);
    digitalWrite(yesil_led, LOW);
    digitalWrite(layer[0], 1);
    digitalWrite(layer[1], 0);
    digitalWrite(layer[2], 0);
    }

    else if (a == 110)
    {
      lcd.setCursor (0, 0);
      lcd.print("************");
      lcd.setCursor (0, 1);
      lcd.println("------YESIL-----");
      digitalWrite(kirmizi_led, LOW);
      digitalWrite(yesil_led, HIGH);
      digitalWrite(layer[0], 0);
      digitalWrite(layer[1], 0);
      digitalWrite(layer[2], 0);
    }
    else if (a == 130)
    {
      lcd.setCursor (0, 0);
      lcd.print("**************");
      lcd.setCursor (0, 1);
      lcd.println("-----TURUNCU----");
      digitalWrite(kirmizi_led, HIGH);
      digitalWrite(yesil_led, LOW);
      digitalWrite(layer[0], 0);
      digitalWrite(layer[1], 1);
      digitalWrite(layer[2], 0);
    }
    else if (a == 150)

    {

      lcd.setCursor (0, 0);
      lcd.print("****************");
      lcd.setCursor (0, 1);
      lcd.println("---ACIK  MAVI---");
      digitalWrite(kirmizi_led, LOW);
      digitalWrite(yesil_led, LOW);
      digitalWrite(layer[0], 1);
      digitalWrite(layer[1], 0);
      digitalWrite(layer[2], 1);
    }
    delay (50);
  }


}
void loop() {




  // Okunacak kırmızı filtrelenmiş fotodiyotların ayarlanması
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);



  // Çıkış frekansını okuma
  yogunluk = pulseIn(sensorOut, LOW);
  r = yogunluk;

  // Seri monitörde değeri yazdırma
  Serial.print("Kirmizi= ");// baskı adı
  Serial.print(yogunluk);// Kırmızı renk sıklığı yazdırma
  Serial.print("  ");
  delay(100);
  /*if(yogunluk>50 && yogunluk<200) {
    servo1.write(30);
    }*/

  // Okunacak yeşil filtrelenmiş fotodiyotları ayarlama
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  // Çıkış frekansını okuma
  yogunluk = pulseIn(sensorOut, LOW);
  g = yogunluk;

  // Seri monitörde değeri yazdırma
  Serial.print("Yesil= ");// baskı adı
  Serial.print(yogunluk);// Yeşil renk sıklığı yazdırma
  Serial.print("  ");
  delay(100);
  /*if(yogunluk>100 && yogunluk<150) {
    servo1.write(60);
    }*/

  // Okunacak mavi filtrelenmiş fotodiyotları ayarlama
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  // Çıkış frekansını okuma
  yogunluk = pulseIn(sensorOut, LOW);
  b = yogunluk;

  // Seri monitörde değeri yazdırma
  Serial.print("Mavi= ");// baskı adı
  Serial.print(yogunluk);// Mavi renk sıklığı yazdırma
  Serial.println("  ");
  delay(100);
  /*if(yogunluk>70 && yogunluk<90) {
    servo1.write(90);
    }*/



  lcd.clear();
  lcd.setCursor (0, 0);
  lcd.print("R="); lcd.print(r);
  lcd.setCursor (5, 0);
  lcd.print("G="); lcd.print(g);
  lcd.setCursor (10, 0);
  lcd.print("B="); lcd.print(b);
  delay(500);
  if ( ( r - ortalama < 29 && r + ortalama > 29 ) && ( g - ortalama < 51 && g + ortalama > 51 ) && ( b - ortalama < 75 && b + ortalama > 75) ) {
    servo1.write(55);

    lcd.setCursor (0, 1);
    lcd.println("------SARI------");
    digitalWrite(kirmizi_led, LOW);
    digitalWrite(yesil_led, LOW);
    digitalWrite(layer[0], 0);
    digitalWrite(layer[1], 1);
    digitalWrite(layer[2], 0);
    delay(1000);
  }

  else if ( ( r - ortalama < 31  && r + ortalama > 31 ) && ( g - ortalama < 100 && g + ortalama > 100 ) && ( b - ortalama < 60 && b + ortalama > 60) ) {
    servo1.write(100);

    lcd.setCursor (0, 1);
    lcd.println("------PEMBE-----");
    digitalWrite(kirmizi_led, HIGH);
    digitalWrite(yesil_led, LOW);
    digitalWrite(layer[0], 1);
    digitalWrite(layer[1], 0);
    digitalWrite(layer[2], 0);
    delay(1000);
  }

  else if ( ( r - ortalama < 34 && r + ortalama > 34 ) && ( g - ortalama < 100 && g + ortalama > 100 ) && ( b - ortalama < 100 && b + ortalama > 100) ) {
    servo1.write(130);

    lcd.setCursor (0, 1);
    lcd.println("-----TURUNCU----");
    digitalWrite(kirmizi_led, HIGH);
    digitalWrite(yesil_led, LOW);
    digitalWrite(layer[0], 0);
    digitalWrite(layer[1], 1);
    digitalWrite(layer[2], 0);
    delay(1000);
  }
  else if ( ( r - ortalama < 50  && r + ortalama > 50 ) && ( g - ortalama < 160 && g + ortalama > 160) && ( b - ortalama < 125 && b + ortalama > 125) ) {
    servo1.write(35);

    lcd.setCursor (0, 1);
    lcd.println("-----KIRMIZI----");
    digitalWrite(kirmizi_led, HIGH);
    digitalWrite(yesil_led, LOW);
    digitalWrite(layer[0], 0);
    digitalWrite(layer[1], 0);
    digitalWrite(layer[2], 0);
    delay(1000);
  }

  else if ( ( r - ortalama < 90 && r + ortalama > 90 ) && ( g - ortalama < 72 && g + ortalama > 72 ) && ( b - ortalama < 115 && b + ortalama > 115) ) {
    servo1.write(110);

    lcd.setCursor (0, 1);
    lcd.println("------YESIL-----");
    digitalWrite(kirmizi_led, LOW);
    digitalWrite(yesil_led, HIGH);
    digitalWrite(layer[0], 0);
    digitalWrite(layer[1], 0);
    digitalWrite(layer[2], 0);
    delay(1000);
  }


  else if ( ( r - ortalama < 90 && r + ortalama > 90 ) && ( g - ortalama < 63 && g + ortalama > 63 ) && ( b - ortalama < 43 && b + ortalama > 43) ) {
    servo1.write(150);

    lcd.setCursor (0, 1);
    lcd.println("---ACIK  MAVI---");
    digitalWrite(kirmizi_led, LOW);
    digitalWrite(yesil_led, LOW);
    digitalWrite(layer[0], 1);
    digitalWrite(layer[1], 0);
    digitalWrite(layer[2], 1);
    delay(1000);
  }


  else if ( ( r - ortalama < 66  && r + ortalama > 66 ) && ( g - ortalama < 40 && g + ortalama > 40 ) && ( b - ortalama < 25 && b + ortalama > 25) ) {
    servo1.write(65);

    lcd.setCursor (0, 1);
    lcd.println("------MAVI------");
    digitalWrite(kirmizi_led, LOW);
    digitalWrite(yesil_led, LOW);
    digitalWrite(layer[0], 0);
    digitalWrite(layer[1], 0);
    digitalWrite(layer[2], 1);
    delay(1000);

  }
  else if ( ( r - ortalama < 154  && r + ortalama > 154 ) && ( g - ortalama < 190 && g + ortalama > 190 ) && ( b - ortalama < 108 && b + ortalama > 108) ) {
    servo1.write(76);
    lcd.setCursor (0, 1);
    lcd.println("------MOR-------");
    digitalWrite(kirmizi_led, HIGH);
    digitalWrite(yesil_led, LOW);
    digitalWrite(layer[0], 0);
    digitalWrite(layer[1], 0);
    digitalWrite(layer[2], 1);
    delay(1000);

  }
  else {
    servo1.write(90);

    lcd.setCursor (0, 1);
    lcd.println("Renk  BULUNAMADI");
    digitalWrite(kirmizi_led, LOW);
    digitalWrite(yesil_led, LOW);
    digitalWrite(layer[0], 0);
    digitalWrite(layer[1], 0);
    digitalWrite(layer[2], 0);
  }


}

 

Sosyal Medyada Paylaş Facebook Twitter Google+


Eklenme Tarihi: 17 Kasım 2017

Konu hakkında yorumunuzu yazın

Arduino Renk Bulan Proje (34 Yorum)

    • Video atınız. Whatsaapp 0553 404 81 14 daha hızlı yardımcı olabilir sorunu anlayabilirim.

  1. Tcs3200 renk sensoru sürekli yanıp sonuyo nedeni ne olabilir bu proje beyaz rengi alıyor mu? Bide devreyi durup arduinoyoyu kodu yükleyip devreyi çalıştığında ledlerin hepsi bi anda yanıp siniyi servo motor 1 kere dönüp sonra duruyo ilk çalıştığında böyle şeyler mi olması gerekiyo projeyi 3 4 gün içerisinde yapıp sunmam lazım o yüzden bu kadar soru soruyorum bazı aksaklıklar cikiyo yaparken sürekli olarak

    • Aynen o şekilde olacak. Ledler yanıp sönecek ve servo renk skalasını bir tür atıp ortada duracak.

  2. Kullandigim elemanlara bakabilirmişiz yazdim bu elemanları kullandım koduda yukarıdaki yazanı yazdim bi sıkıntı olurmu yukarıdaki semada bağlantı hatası varmi hic

    • Elemanlar doğru,kod ve devre şeması doğru,Zaten devre şemasını koda bakarak doğrulayabilirsiniz.Şuan elimde aynı projeden var çalışmakta.

  3. Proje kullandığım elemanlar lcd ekran tcs3200renk sensoru potansiyometre servo motor arduino uno led ama ledlerin renkleri birinin aynısı olan ledlerde var 220 direnç bunları kullandım ve yukarıda yazdığınız kodu kullandım başka elemana gerek var mi

  4. Servo motoru voltaj regulatorune bağlamadan arduino ya ya bağlayarak beslesem kod kısmında bi sıkıntı olmaz demi

  5. Birleşip 5v ve gnd ye giden noktalar varya onlardan bazılarını breadboardin + – kismina bağlayıp yapabilirmiyim daha öncede sormuştum aynı arduino primine birden fazla eleman giderse ne olur diye

  6. siz voltaj regülatörü ve power plug kullanmışız ya projeyi yaparken onları kullanmadan da yapabiliryimiyim kullandiginiz elemanları ve kullanmadan da yapabileceklerimi yazabilirmis

  7. Normal yukarıdaki yazılan kodu yazsam hani dediniz ya rab led yerine normal led kullandık diye ben direk rgb led kullansam olur mu bide normal 220 ohm lük direkten başka bide ayarlı direnç mi var direncin üstünde ok olan direnc varya onu kastediyorum onu kullanmamız gerekiyo mu

  8. Tcs3200 ile nesnelerin rengini algılayan bir proje yaptım ama sadecerenk sensoru rengi algılayıp lcd ekrana yaziyo ilk defa arduino ile proje yapıyorum yaptığım projeye biraz daha biseyler katmayı düşündüm ama olmadi katmayı dusundum şeyler bu projeye benziyo devre şemasını biraz alamadığım için kuramadım yaptığım projeye servo motor ekleyip renk led ekranda yazınca algılanan renge servo motor dönsün ve rgb ledde algılanan renkte yansin gibi düşünmüştüm ama yapamadim sizin yaptığınız proje düşündüğüm sekle benziyo ama dediğim gibi sema biraz anlamadim

    • Lcd de bir karışıklık olmuş.
      Lcd nin 3 bacağını potun 3. Bacağına bağlayın. Konstrat ayarı için yani yazının netliğini ayarlamak için. Sonra Lcd nin 1.5.ve 16. Bacağını gnd hattına çekin. Sizin aklınızdaki proje ile aynı sadece rgb yerine normal led kullanıldı.

  9. Semada volj regülatörü ve power plug1 yazan yeride anlamadim bu elemanları kullanmamız gerekiyo mu kullanmasak olurmu birde bread board üzerinede yapabiliriz bu projeyi yapabiliriz degil mi burda kullanılmamış breadboard galiba

    • Ben servonun gerilimini 7805 üzerinden veriyorum siz direkt Arduino dan verebilirsiniz. Power dediginiz şey 9v adaptör girişi. Yani Arduino ya bağlandığım adaptörden bir çıkış alıp 7805 ile 9v u 5 volta indirip servoyu besledim. Ben baskı Devre yöntemi ile yaptım sizin tercihiniz bird üzerinede yapılır tabi.

  10. Mesela birden fazla eleman aeduinonun 7.bacağına gidiyoya arduino ya 1 tane 7. pin var 7. Pine bağlanması gereken elemanları nasıl hepsini tek pine bağlanacak hale getiremiliriz

    • Benim gördüğüm ve şemada olan sadece Lcd nin D4.bacağı 7. Pine gidiyor . Sizce başka hangi bacak 7.pine gidiyor gözüküyor.

  11. Projenin bağlantı şemasını tam olarak anlamadım daha anlaşılır sema yollabilirmisiniz çok önemli rica etsem

  12. Projenin kodu nasıl kodu yok nerden bulabiliriz yollayabilirmisiniz bi de proje bağlantı şeması tam anlasilir degil

HOŞ GELDİNİZ

Youtube kanalıma Abone Olabilirsiniz.