الكود البرمجي
ارفع كود مشروع الدرج المضيء على لوحة الاردوينو باستخدام برنامج اردوينو (IDE).
const int led1 = 1; const int led2 = 2; const int led3 = 3; const int led4 = 4; const int led5 = 5; const int led6 = 6; const int led7 = 7; const int led8 = 8; const int led9 = 9; const int led10 = 10; const int led11 = 11; int PIRsensor1 = 13; int PIRsensor2 = 12; int val1 = 0; int val2 = 0; void setup() { pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); pinMode(led5, OUTPUT); pinMode(led6, OUTPUT); pinMode(led7, OUTPUT); pinMode(led8, OUTPUT); pinMode(led9, OUTPUT); pinMode(led10, OUTPUT); pinMode(led11, OUTPUT); pinMode(PIRsensor1, INPUT); pinMode(PIRsensor2, INPUT); } void loop() { val1 = digitalRead(PIRsensor1); val2 = digitalRead(PIRsensor2); if (val1 == HIGH) { digitalWrite(led1, HIGH); delay(500); digitalWrite(led2, HIGH); delay(500); digitalWrite(led3, HIGH); delay(500); digitalWrite(led4, HIGH); delay(500); digitalWrite(led5, HIGH); delay(500); digitalWrite(led6, HIGH); delay(500); digitalWrite(led7, HIGH); delay(500); digitalWrite(led8, HIGH); delay(500); digitalWrite(led9, HIGH); delay(500); digitalWrite(led10, HIGH); delay(500); digitalWrite(led11, HIGH); delay(500); digitalWrite(led1, LOW); delay(500); digitalWrite(led2, LOW); delay(500); digitalWrite(led3, LOW); delay(500); digitalWrite(led4, LOW); delay(500); digitalWrite(led5, LOW); delay(500); digitalWrite(led6, LOW); delay(500); digitalWrite(led7, LOW); delay(500); digitalWrite(led8, LOW); delay(500); digitalWrite(led9, LOW); delay(500); digitalWrite(led10, LOW); delay(500); digitalWrite(led11, LOW); delay(200); } if (val2 == HIGH) { digitalWrite(led11, HIGH); delay(500); digitalWrite(led10, HIGH); delay(500); digitalWrite(led9, HIGH); delay(500); digitalWrite(led8, HIGH); delay(500); digitalWrite(led7, HIGH); delay(500); digitalWrite(led6, HIGH); delay(500); digitalWrite(led5, HIGH); delay(500); digitalWrite(led4, HIGH); delay(500); digitalWrite(led3, HIGH); delay(500); digitalWrite(led2, HIGH); delay(500); digitalWrite(led1, HIGH); delay(500); digitalWrite(led11, LOW); delay(500); digitalWrite(led10, LOW); delay(500); digitalWrite(led9, LOW); delay(500); digitalWrite(led8, LOW); delay(500); digitalWrite(led7, LOW); delay(500); digitalWrite(led6, LOW); delay(500); digitalWrite(led5, LOW); delay(500); digitalWrite(led4, LOW); delay(500); digitalWrite(led3, LOW); delay(500); digitalWrite(led2, LOW); delay(500); digitalWrite(led1, LOW); delay(200); } else { digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); digitalWrite(led6, LOW); digitalWrite(led7, LOW); digitalWrite(led8, LOW); digitalWrite(led9, LOW); digitalWrite(led10, LOW); digitalWrite(led11, LOW); } }
شرح الكود البرمجي
في البداية عرفنا المتغيرات التي سنستخدمها لتخزين قيم الثنائي المشع للضوء.
const int led1 = 1; const int led2 = 2; const int led3 = 3; const int led4 = 4; const int led5 = 5; const int led6 = 6; const int led7 = 7; const int led8 = 8; const int led9 = 9; const int led10 = 10; const int led11 = 11;
بعد ذلك عرفنا المتغيرين PIRsensor1 و PIRsensor2 اللذين سنستخدمهم لتعريف حساسي الحركة.
int PIRsensor1 = 13; int PIRsensor2 = 12;
المتغيرين val1 و val2 سيحملون القيمة الابتدائية وهي صفر لحساسي الحركة.
int val1 = 0; int val2 = 0;
في الدالة ()setup سيتم تهيئة الثنائي المشع للضوء على أن يكون مخرج.
وحساس الحركة على أن يكون مدخل للبيانات.
void setup() { pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); pinMode(led5, OUTPUT); pinMode(led6, OUTPUT); pinMode(led7, OUTPUT); pinMode(led8, OUTPUT); pinMode(led9, OUTPUT); pinMode(led10, OUTPUT); pinMode(led11, OUTPUT); pinMode(PIRsensor1, INPUT); pinMode(PIRsensor2, INPUT); }
في الدالة ()loop ستتم قراءة قيم كلا حساسي الحركة.
إذا كان هناك حركة في الحساس الأول (الدرج أسفل الدرج) ستبدأ الإضاءة بالعمل بشكل متناوب وزمن إيقاف بينهم مدته نصف ثانية,
void loop() { val1 = digitalRead(PIRsensor1); val2 = digitalRead(PIRsensor2); if (val1 == HIGH) { digitalWrite(led1, HIGH); delay(500); digitalWrite(led2, HIGH); delay(500); digitalWrite(led3, HIGH); delay(500); digitalWrite(led4, HIGH); delay(500); digitalWrite(led5, HIGH); delay(500); digitalWrite(led6, HIGH); delay(500); digitalWrite(led7, HIGH); delay(500); digitalWrite(led8, HIGH); delay(500); digitalWrite(led9, HIGH); delay(500); digitalWrite(led10, HIGH); delay(500); digitalWrite(led11, HIGH); delay(500); digitalWrite(led1, LOW); delay(500); digitalWrite(led2, LOW); delay(500); digitalWrite(led3, LOW); delay(500); digitalWrite(led4, LOW); delay(500); digitalWrite(led5, LOW); delay(500); digitalWrite(led6, LOW); delay(500); digitalWrite(led7, LOW); delay(500); digitalWrite(led8, LOW); delay(500); digitalWrite(led9, LOW); delay(500); digitalWrite(led10, LOW); delay(500); digitalWrite(led11, LOW); delay(200); }
إذا كان هناك حركة مقابل الحساس الثاني (الدرج أعلى الدرج) ستبدأ الإضاءة بالعمل بشكل متناوب وزمن إيقاف بينهم مدته نصف ثانية.
if (val2 == HIGH) { digitalWrite(led11, HIGH); delay(500); digitalWrite(led10, HIGH); delay(500); digitalWrite(led9, HIGH); delay(500); digitalWrite(led8, HIGH); delay(500); digitalWrite(led7, HIGH); delay(500); digitalWrite(led6, HIGH); delay(500); digitalWrite(led5, HIGH); delay(500); digitalWrite(led4, HIGH); delay(500); digitalWrite(led3, HIGH); delay(500); digitalWrite(led2, HIGH); delay(500); digitalWrite(led1, HIGH); delay(500); digitalWrite(led11, LOW); delay(500); digitalWrite(led10, LOW); delay(500); digitalWrite(led9, LOW); delay(500); digitalWrite(led8, LOW); delay(500); digitalWrite(led7, LOW); delay(500); digitalWrite(led6, LOW); delay(500); digitalWrite(led5, LOW); delay(500); digitalWrite(led4, LOW); delay(500); digitalWrite(led3, LOW); delay(500); digitalWrite(led2, LOW); delay(500); digitalWrite(led1, LOW); delay(200); }
إذا لم يكن هناك حركة مقابل كلا الحساسين ستتوقف الإضاءة عن العمل.
else { digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); digitalWrite(led6, LOW); digitalWrite(led7, LOW); digitalWrite(led8, LOW); digitalWrite(led9, LOW); digitalWrite(led10, LOW); digitalWrite(led11, LOW); }
يمكنك اختبار مشروع الدرج المضيء بعد رفع الكود البرمجي.
لا تنسَ فصل مصدر الطاقة بعد الانتهاء من استخدام النظام.