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

- شرح مختصر عن المنافذ :
* Vcc & GND : فهذه لمصدر التغذية
* S0,S1 : فهذه المنافذ لنتحكم ب دقه حساب الترددات المناسبة للالوان التي سنتحسسها
* S2,S3 : و ايضا لتحديد نوعية الالوان
* OE (output enable): للسماح باخد قيم التي ستنتج من الحساس ام لا
* OUT : مخرج لنأخذ منه قيم الترددات للون الذي سنتحسسه
* 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 : 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