حساس الالون اردوينو

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


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


- لهذا الحساس ثمانية منافذ موضحة بالصورة :
Résultat de recherche d'images pour "arduino capteur couleur"
- شرح مختصر عن المنافذ : 
* 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)


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

التوصيل:

Image associée

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

البرنامج :

/*
TCS230 Arduino Demo Code 
light RGB LED depend on The detected color
Code written By : AIT-LASRI YOUNES
 ici electronique

*/   
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); 
} 


EmoticonEmoticon