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

- كيفية  استشعار بعض الألوان وتمييزها باستخدام حساس الألوان واضاءة 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