مشروع قياس المسافه  (لعبة اضواء المسافه)



سنقوم بصنع أداة إلكترونية يتم فيها التحكم بالإضاءة بواسطة الاردوينو حيث 
يتم ارسال الاوامر لها عن طريق  بتحريك اليد نحو الدائرة وبعيداً عنها. 


القطع المطلوبه للمشروع



اسم القطعه بالعربيه
اسم القطعه بالانجليزيه
المصدر
اردوينو اونو
Arduino Uno
https://www.sparkfun.com/products/11224
حساس ضوء
LDR
https://www.sparkfun.com/products/9088
LED ضوء
LED Lights
https://www.sparkfun.com/products/12062
لوح تجارب
mini breadboard
https://www.sparkfun.com/products/12047
مقاومات 220 اوم
220 Ohm resistors
https://www.sparkfun.com/products/13053
مقاومه 1 كيلو اوم
1 KOhm Resistor
https://www.sparkfun.com/products/13053
اسلاك توصيل
Connecting Wires
https://www.sparkfun.com/products/12794

توصيل اضواء LED


اخترت من وحدات الإضاءة : 2 لونها أخضر ، 3 لونها أصفر وواحد لونه أحمر. يمكنك إضافة المزيد إذا كنت ترغب في ذلك ، فقط
تأكد من إضافة المقاومات والأسلاك إضافية إلى ال Arduino , ضع في اعتبارك أن Arduino لا يمكنه توفير الكثير من الطاقة ، لذلك عند نقطة معينة ، فإن إضافة المزيد من مصابيح LED يجعلها كلها باهتة.

توصيل السلك الأرضي و توصيل وحدات الإضاءة له : 
ابدأ بإضافة سلك بين الخط الأزرق (السالب - ) من لوح التجارب ومدخل ال GND في الأردوينو , هذا يضمن أن جميع المكونات الموجودة على Arduino واللوحة تشترك الآن في نقطة سالبة مشتركة ويمكنها عمل دائرة متكاملة. بعد ذلك ، قم بتوصيل الساق القصيرة (الأرضية) الخاصة بمصباح LED  بالخط الأزرق (السلبي) على لوح التجارب.


توصيل حساس الضوء LDR

لتوصيل حساس الضوء سنقوم بإنشاء مقسم الجهد باستخدام مقاومة قيمتها 10 كيلو أوم (بني ، أسود ، برتقالي). ضع إحدى ساقي حساس الضوء في الخط الأرضي في لوح التجارب والساق الأخرى في أي صف من نقاط التوصيل في لوح التجارب .


أضف بعد ذلك سلكًا من مخرج 5V في الأردوينو – ممتداً  إلى صف مختلف على لوح التجارب وقم بوضع المقاومة  
 10KΩ  بينهما. 


أخيرًا ، بعد أن قمنا بتكوين مقسم للجهد ، نحتاج إلى الحصول على الإشارة منه باتجاه الأردوينو ، لذلك خذ سلكًا آخر وقم بتوصيل أحد طرفي حساس الضوء،  والطرف الآخر في A0 المدخل التناظري (analog) على الاردوينو.



الكود البرمجي



  const int redPin = 2 ;
const int yellowPin1 = 3 ;
const int yellowPin2 = 4 ;
const int yellowPin3 = 5 ;
const int greenPin1 = 6 ;
const int greenPin2 = 7 ;
const int photoPin = A0 ;


void setup() {
  Serial.begin(9600);
  pinMode(redPin, OUTPUT);
  pinMode(greenPin1, OUTPUT);
  pinMode(greenPin2, OUTPUT);  
  pinMode(yellowPin1, OUTPUT);  
  pinMode(yellowPin2, OUTPUT);   
  pinMode(yellowPin3, OUTPUT);    
}

void loop(){
  // default to LED's off
  ledState(LOW,LOW,LOW,LOW,LOW,LOW);
  Serial.println(analogRead(photoPin));
    if(analogRead(photoPin)>100){
      ledState(LOW,LOW,LOW,LOW,LOW,HIGH);
      }
    if(analogRead(photoPin)>200){
      ledState(LOW,LOW,LOW,LOW,HIGH,HIGH);
      }
     if(analogRead(photoPin)>300){
      ledState(LOW,LOW,LOW,HIGH,HIGH,HIGH);
      }
      if(analogRead(photoPin)>400){
      ledState(LOW,LOW,HIGH,HIGH,HIGH,HIGH);
      }
      if(analogRead(photoPin)>500){
      ledState(LOW,HIGH,HIGH,HIGH,HIGH,HIGH);
      }
      if(analogRead(photoPin)>600){
      ledState(HIGH,HIGH,HIGH,HIGH,HIGH,HIGH);
      }
 }
 
 boolean ledState(boolean r,boolean y1,boolean y2,boolean y3,boolean g1,boolean g2){
    digitalWrite(redPin, r);
    digitalWrite(yellowPin1, y1);
    digitalWrite(yellowPin2, y2);
    digitalWrite(yellowPin3, y3);
    digitalWrite(greenPin1, g1);
    digitalWrite(greenPin2, g2);
 }