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
Yorum Gönder