Renk Sensörü Kullanımı-1

Renk Sensörü Kullanarak Cismin Renginde RGB Led Yakmak

Bu projemizde Arduino ile renk sensörü kullanmayı öğreneceğiz. Renk sensörü üzerindeki ledler vasıtasıyla cismi aydınlatan ve bu ledlerin ortasına konumlandırılmış renk algılayıcı sensör kullanarak cismin rengini algılar. Biz bu prjemizde renk sensörü ile cismimimiz rengini algılayacağız ve Rgb ledimiz algılanan renkte yanacak. Örneğin sensörümüzü kırmızı bir cisme yaklaştırdığımızda Rgb ledimiz de kırmızı olarak yanacaktır. 

Şimdi projemizin bağlantı şemasına ve kodlarına bir göz atalım. 
Bağlantımızı aşağıdaki gibi yapıyoruz.
Color Sensor      Arduino
   -----------           --------
 VCC                    5V
 GND                   GND
   s0                          8
   s1                          9
   s2                        12
   s3                        11
 OUT                     10
 OE                      GND

Renk sensörümüz ve Arduinomuzun yukarıda belirtilen şekilde bağlantısını yaptıktan sonra, aşağıdaki kodlarımızı yüklüyoruz.

const int s0 = 8;
const int s1 = 9;
const int s2 = 12;
const int s3 = 11;
const int out = 10; 
// LED pins connected to Arduino
int redLed = 2;
int greenLed = 3;
int blueLed = 4;
// Variables
int red = 0;
int green = 0;
int blue = 0;
int indeks=0;
const int rgbr=7;
const int rgbg=6;
const int rgbb=5;
 
void setup() 
{
  Serial.begin(9600);
  pinMode(s0, OUTPUT);
  pinMode(rgbr, OUTPUT);
  pinMode(rgbg, OUTPUT);
  pinMode(rgbb, OUTPUT);
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);
  pinMode(s3, OUTPUT);
  pinMode(out, INPUT);
  pinMode(redLed, OUTPUT);
  pinMode(greenLed, OUTPUT);
  pinMode(blueLed, OUTPUT);
  digitalWrite(s0, HIGH);
  digitalWrite(s1, HIGH);
}
 
void loop()
{
  color();
//  Serial.print("R Intensity:");
//  Serial.print(red, DEC);
//  Serial.print(" G Intensity: ");
//  Serial.print(green, DEC);
//  Serial.print(" B Intensity : ");
//  Serial.print(blue, DEC);
//  //Serial.println();
//
//  if (red < blue && red < green&&blue>20&&green>20&&red<20)
//  {
//   Serial.println(" - (Red Color)");
//   digitalWrite(redLed, HIGH); // Turn RED LED ON
//   digitalWrite(greenLed, LOW);
//   digitalWrite(blueLed, LOW);
//  }
//
//  else if (blue < red && blue < green &&red>20&&green>15&&blue<20) 
//  {
//   Serial.println(" - (Blue Color)");
//   digitalWrite(redLed, LOW);
//   digitalWrite(greenLed, LOW);
//   digitalWrite(blueLed, HIGH); // Turn BLUE LED ON
//  }
//
//  else if (green < red && green < blue)
//  {
//   Serial.println(" - (Green Color)");
//   digitalWrite(redLed, LOW);
//   digitalWrite(greenLed, HIGH); // Turn GREEN LED ON
//   digitalWrite(blueLed, LOW);
//  }
//  else{
//  Serial.println();
//  }
//  delay(300); 
//  digitalWrite(redLed, LOW);
//  digitalWrite(greenLed, LOW);
//  digitalWrite(blueLed, LOW);
  int tmpr=(((40-red)-10)*34);
  int tmpg=(((  43-green)-12)*33);
  int tmpb=(((35-blue)-8)*37);
  if(tmpr<0)
  tmpr=0;
 
    if(tmpg<0)
  tmpg=0;
 
    if(tmpb<0)
  tmpb=0;
 
  if(tmpg>tmpb&&tmpg>tmpr)
 { tmpb=0;
  tmpr=0;
 }
  analogWrite(rgbr,tmpr);
  analogWrite(rgbg,tmpg );
  analogWrite(rgbb,tmpb );
 
  indeks++;
  if(indeks==1000)
  {
   indeks=0;
   Serial.print("Red");
   Serial.print(tmpr);
   Serial.print("Green");
   Serial.print(tmpg);
   Serial.print("Blue"); 
   Serial.print(tmpb);
   Serial.println();
  }
 
 }
 
void color()

  digitalWrite(s2, LOW);
  digitalWrite(s3, LOW);
  //count OUT, pRed, RED
 
 
  red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
  digitalWrite(s3, HIGH);
  //count OUT, pBLUE, BLUE
  blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
  digitalWrite(s2, HIGH);
  //count OUT, pGreen, GREEN
  green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
 
}
yukarıdaki kodları Arduinomuz üzerine yüklediğimizde, programımız çalışacak, örneğin mavi renkli bir cisme tutulduğunda Rgb ledimiz mavi olarak yanacaktır. Kodları indirmek için tıklayınız.

Yorumlar

Bu blogdaki popüler yayınlar

Potansiyometre ile Led ve Buzzer Kontrolü

ARDUİNO İLE PONG OYUNU YAPIMI