الجمعة، 27 مارس، 2015

حساس الالوان TCS230

color sensor (TCS230)




مقالتنا اليوم  ستكون عن كيفية  استشعار بعض الألوان وتمييزها باستخدام حساس الألوان واضاءة RGB LED وفقا للون المستشعر , وطباعة النتائج على الشاشة 




فحساس الالون هو حساس يستطيع التمييز بين الالوان المختلفة , فان هذا الحساس يستطيع ان يحول شده  الالوان الى ترددات (frequencies)  مختلفة تعبر عن شده و نوعية اللون 




لهذا الحساس ثمانية منافذ موضحة بالصورة :



سنقوم الان بشرح مختصر عن المنافذ : 

Vcc & GND :  فهذه لمصدر التغذية 

S0,S1 :  فهذه المنافذ لنتحكم ب دقه حساب الترددات المناسبة للالوان التي سنتحسسها 

S2,S3 : و ايضا لتحديد نوعية الالوان

OE (output enable): للسماح باخد قيم التي ستنتج من الحساس ام لا 

OUT : مخرج لنأخذ منه قيم الترددات للون الذي سنتحسسه 



القطع التي نحتاجها في هذه التجربة : 

1. بطاقة اردوينو UNO
2. حساس ألالوان
3. ثلاثي الألوان RGB
4. ثلاث مقاومات 300 اوم
5. اسلاك توصيل 
6. Bread board


 هذا الحساس يفتقر الى الدقه في الاستشعار ..... حيث انه مصمم لاستشعار 3 الوان و هم الاخضر , الازرق,الاحمر اما باقي الالوان لتحديدها , نحتاج لدارسة الترددات المنبعثة منها و تحديد طريقة استشعار مثل هذه الالوان.
 المميز بهذا الحساس انه لا يحتاج الى الكثير من الطاقه لتشغيله  (low power consumption)

والان بعدما تعرفنا على منافذ الحساس و وصف موجز لطريقة عمله سنتعلم الان طريقة توصيل هذه القطعه .

التوصيل:




بعد ان تعرفنا على طريقة توصيل الحساس , الان سنتعرف على البرنامج  الذي سنستخدمه في تجربتنا 

البرنامج :
/*
TCS230 Arduino Demo Code 
light RGB LED depend on The detected color
Code written By : 
RAZAN BARHAM ,Lina Amr - Jordan 
http://www.genotronex.com/

*/   
const int s0 = 8;  
const int s1 = 9;  
const int s2 = 11;  
const int s3 = 12;  
const int out = 10; 

const int redPin=2;
const int greenPin=3;
const int bluePin=4;

    
int red = 0;  
int green = 0;  
int blue = 0;  
    
void setup()   
{  
  pinMode(s0, OUTPUT);  
  pinMode(s1, OUTPUT);  
  pinMode(s2, OUTPUT);  
  pinMode(s3, OUTPUT);  
  pinMode(out, INPUT);
  
 pinMode(redPin,OUTPUT);
  pinMode(greenPin,OUTPUT);
  pinMode(bluePin,OUTPUT); 
  
  Serial.begin(9600);  
  digitalWrite(s0, HIGH);  
  digitalWrite(s1, HIGH);  
} 

void RED(){
  digitalWrite(redPin,HIGH);
  digitalWrite(greenPin,LOW);
  digitalWrite(bluePin,LOW);
} 


void GREEN(){
  digitalWrite(redPin,LOW);
  digitalWrite(greenPin,HIGH);
  digitalWrite(bluePin,LOW);
  }


void BLUE(){
  digitalWrite(redPin,LOW);
  digitalWrite(greenPin,LOW);
  digitalWrite(bluePin,HIGH);
}



void PINK(){
  digitalWrite(redPin,HIGH);
  digitalWrite(greenPin,LOW);
  digitalWrite(bluePin,HIGH);
} 



void YELLOW(){
  digitalWrite(redPin,HIGH);
  digitalWrite(greenPin,HIGH);
  digitalWrite(bluePin,LOW);
}


void WHITE(){
   digitalWrite(redPin,HIGH);
  digitalWrite(greenPin,HIGH);
  digitalWrite(bluePin,HIGH);
}
    
void loop() 
{  
  color(); 
  Serial.print("RED :");  
  Serial.print(red, DEC);  
  Serial.print(" GREEN : ");  
  Serial.print(green, DEC);  
  Serial.print(" BLUE : ");  
  Serial.print(blue, DEC);  
  Serial.println();  

  if (red < blue && red < green)  
  {  
   if (red > 20){  
        Serial.println("BROWN"); }
    
       if (red < 20 && green >20 && blue > 20){ 
        RED(); 

   Serial.println("RED");
 }
   
   if( red <20 && green < 20){
     YELLOW();
      Serial.println("YELLOW");
    }
             if (red < 20 && green >20 && blue < 20){ 
               PINK();
               
      Serial.println("PINK");
    }


  
 }
  else if (blue < red && blue < green)   
  {  
    if (blue < 5)
      {WHITE();
        Serial.println("WHITE");
      }  
      
    if (blue > 5 && blue < 50){
      BLUE();

   Serial.println("BLUE"); } 
   if (blue > 50 )
   {   Serial.println("BLACK"); } 

}
  

  else if (green < red && green < blue)  
  {  
    GREEN();
   Serial.println("GREEN");
     
   
  }  
  Serial.println();  

  delay(2000);    
 } 

    
void color()  
{  
  digitalWrite(s2, LOW);  
  digitalWrite(s3, LOW);  

  red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);  
  digitalWrite(s3, HIGH);  

  blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);  
  digitalWrite(s2, HIGH);  

  green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); 
} 

  


في النهاية سنريكم مجموعة من التجارب على الوان استطاع برنامجنا استشعارها :








video
وهذا فيديو عملي لاختبار الحساس :


الكاتبة : رزان برهم - لينه عامر الأردن 


1 التعليقات :

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.