You are on page 1of 14

‫اﻟﺪرج اﻟﻤﻀ‪‬ء ﺑﺎﺳﺘﺨﺪام اﻻردوﻳﻨﻮ وﺣﺴﺎس اﻟﺤﺮﻛﺔ‬

‫ﻣﻘﺪﻣﺔ‬
‫اﻟﺪرج ﻋﻨﺼﺮ ﻣﻌﻤﺎري ﻫﺎم وﻇﻴﻔﻴ‪‬ﺎ ﻳﻤ‪‬ﻦ أن ﻳ‪‬ﻮن ﻋﻨﺼﺮ ﺟﻤﺎﻟ‪ ‬ﺑﺈﺿﺎﻓﺔ ﻣﺼﺎﺑﻴﺢ ﻋﻠ‪ ‬ﻃﻮل اﻟﺪرج ﺗﻮﺿﺢ اﻟﺨﻄﻮات ﻟﻸﻓﺮاد ﺗﺠﻨﺒ‪‬ﺎ‬
‫ﻟﻠﻌﺜﺮات واﻟﺴﻘﻮط وﻳﻤ‪‬ﻦ ﺟﻌﻞ ﻫﺬه اﻟﻤﺼﺎﺑﻴﺢ ﻣﻮﻓﺮة ﻟﻠﻄﺎﻗﺔ ﺑﺤﻴﺚ ﺗﻌﻤﻞ وﻗﺖ ﻣﺮور اﻷﻓﺮاد ﻣﻦ ﺣﻮﻟﻬﺎ وﺗﺘﻮﻗﻒ ﻋﻦ اﻟﻌﻤﻞ إذا ﻛﺎن ﻫﻨﺎك‬
‫ﺳ‪‬ﻮن ﺑﺎﻟﻤ‪‬ﺎن‪ ،‬ﻓ‪ ‬ﻫﺬا اﻟﺪرس ﺳﺘﺘﻌﻠﻢ ﻃﺮﻳﻘﺔ ﺻﻨﻊ اﻟﺪرج اﻟﻤﻀ‪‬ء ﺑﺎﺳﺘﺨﺪام اﻻردوﻳﻨﻮ وﺣﺴﺎس اﻟﺤﺮﻛﺔ‪.‬‬

‫اﻟﻤﻮاد واﻷدوات‬

‫‪1/14‬‬
‫‪ ×1‬اردوﻳﻨﻮ اوﻧﻮ‬

‫‪ ×1‬ﺳﻠﻚ اﻻردوﻳﻨﻮ‬

‫‪ ×1‬ﻟﻮﺣﺔ ﺗﺠﺎرب – ﺣﺠﻢ ﻛﺒﻴﺮ‬

‫‪2/14‬‬
‫ﺣﺰﻣﺔ أﺳﻼك ﺗﻮﺻﻴﻞ )ذﻛﺮ – أﻧﺜ‪(‬‬

‫ﺣﺰﻣﺔ أﺳﻼك ﺗﻮﺻﻴﻞ )ذﻛﺮ‐ ذﻛﺮ(‬

‫ﻳﻤ‪‬ﻨﻚ اﺧﺘﻴﺎر ‪ 11‬ﺛﻨﺎﺋ‪ ‬ﻣﺸﻊ ﻟﻠﻀﻮء ﺣﺴﺐ اﻷﻟﻮان اﻟﺘ‪ ‬ﺗﺮﻳﺪﻳﻬﺎ وﺣﺴﺐ ﺣﺎﺟﺔ ﻣﺸﺮوﻋﻚ‪:‬‬

‫ﺛﻨﺎﺋ‪ ‬ﻣﺸﻊ ﻟﻠﻀﻮء أﺣﻤﺮ )‪(LED‬‬

‫ﺛﻨﺎﺋ‪ ‬ﻣﺸﻊ ﻟﻠﻀﻮء أﺑﻴﺾ )‪(LED‬‬

‫‪3/14‬‬
‫ﺛﻨﺎﺋ‪ ‬ﻣﺸﻊ ﻟﻠﻀﻮء أزرق )‪(LED‬‬

‫ﺛﻨﺎﺋ‪ ‬ﻣﺸﻊ ﻟﻠﻀﻮء أﺧﻀﺮ )‪(LED‬‬

‫‪ ×11‬ﻣﻘﺎوﻣﺔ ‪Ω 220‬‬

‫‪4/14‬‬
‫‪ ×2‬ﺣﺴﺎس اﻟﺤﺮﻛﺔ‬

‫‪ ×1‬ﻫﻴ‪‬ﻞ درج‬

‫ﺗﻮﺻﻴﻞ اﻟﺪاﺋﺮة‬
‫ﻟﻠﻤﺰﻳﺪ ﺣﻮل ﺣﺴﺎس اﻟﺤﺮﻛﺔ ﻳﻤ‪‬ﻨﻚ اﻟﺮﺟﻮع ﻟﻠﺪرس ﺣﺴﺎس اﻟﺤﺮﻛﺔ )‪.(PIR Sensor‬‬

‫‪5/14‬‬
‫اﻟﻬﻴ‪‬ﻞ‬
‫ﻓ‪ ‬ﻫﺬا اﻟﺪرس ﺗﻢ اﺳﺘﺨﺪام ﻗﺎﻟﺐ ﻓﻠﻴﻨ‪ ‬ﻟﻤﺤﺎﻛﺎة اﻟﺪرج‬

‫ﻳﻤ‪‬ﻨﻚ اﺧﺘﻴﺎر ﺷ‪‬ﻞ اﻟﻬﻴ‪‬ﻞ اﻟﻤﻨﺎﺳﺐ ﻟﻚ ﺳﻮاء ﻗﺎﻟﺐ ﻓﻴﻠﻴﻨ‪ ‬أو ﻛﺮﺗﻮﻧ‪ ‬أو ﻧﻤﻮذج ﺑﺎﻟﻄﺎﺑﻌﺔ ﺛﻼﺛﻴﺔ اﻷﺑﻌﺎد أو ﻧﻤﻮذج ﺧﺸﺒ‪ ‬ﺑﺠﻬﺎز اﻟﻠﻴﺰر‪.‬‬

‫‪6/14‬‬
‫ﺗﻢ ﺗﺜﺒﻴﺖ اﻟﺪاﺋﺮة اﻟ‪‬ﻬﺮﺑﺎﺋﻴﺔ ﺑﺸ‪‬ﻞ ﻣﺤ‪‬ﻢ ﺧﻠﻒ اﻟﻘﺎﻟﺐ اﻟﻔﻠﻴﻨ‪.‬‬

‫‪7/14‬‬
‫ﻮد اﻟﺒﺮﻣﺠ‬‫اﻟ‬
.(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);

8/14
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);

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

10/14
‫ﻮد اﻟﺒﺮﻣﺠ‬‫ﺷﺮح اﻟ‬
.‫ اﻟﻤﺸﻊ ﻟﻠﻀﻮء‬‫ ﺳﻨﺴﺘﺨﺪﻣﻬﺎ ﻟﺘﺨﺰﻳﻦ ﻗﻴﻢ اﻟﺜﻨﺎﺋ‬‫ اﻟﺒﺪاﻳﺔ ﻋﺮﻓﻨﺎ اﻟﻤﺘﻐﻴﺮات اﻟﺘ‬‫ﻓ‬

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;

.‫ اﻟﺤﺮﻛﺔ‬‫ اﻟﻠﺬﻳﻦ ﺳﻨﺴﺘﺨﺪﻣﻬﻢ ﻟﺘﻌﺮﻳﻒ ﺣﺴﺎﺳ‬PIRsensor2 ‫ و‬PIRsensor1 ‫ﺑﻌﺪ ذﻟﻚ ﻋﺮﻓﻨﺎ اﻟﻤﺘﻐﻴﺮﻳﻦ‬

int PIRsensor1 = 13;


int PIRsensor2 = 12;

.‫ اﻟﺤﺮﻛﺔ‬‫ ﺻﻔﺮ ﻟﺤﺴﺎﺳ‬‫ ﺳﻴﺤﻤﻠﻮن اﻟﻘﻴﻤﺔ اﻻﺑﺘﺪاﺋﻴﺔ وﻫ‬val2 ‫ و‬val1 ‫اﻟﻤﺘﻐﻴﺮﻳﻦ‬

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() ‫ اﻟﺪاﻟﺔ‬‫ﻓ‬

11/14
,‫ﻞ ﻣﺘﻨﺎوب وزﻣﻦ إﻳﻘﺎف ﺑﻴﻨﻬﻢ ﻣﺪﺗﻪ ﻧﺼﻒ ﺛﺎﻧﻴﺔ‬‫ اﻟﺤﺴﺎس اﻷول )اﻟﺪرج أﺳﻔﻞ اﻟﺪرج( ﺳﺘﺒﺪأ اﻹﺿﺎءة ﺑﺎﻟﻌﻤﻞ ﺑﺸ‬‫إذا ﻛﺎن ﻫﻨﺎك ﺣﺮﻛﺔ ﻓ‬

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

12/14
.‫ﻞ ﻣﺘﻨﺎوب وزﻣﻦ إﻳﻘﺎف ﺑﻴﻨﻬﻢ ﻣﺪﺗﻪ ﻧﺼﻒ ﺛﺎﻧﻴﺔ‬‫ اﻟﺪرج( ﺳﺘﺒﺪأ اﻹﺿﺎءة ﺑﺎﻟﻌﻤﻞ ﺑﺸ‬‫ )اﻟﺪرج أﻋﻠ‬‫إذا ﻛﺎن ﻫﻨﺎك ﺣﺮﻛﺔ ﻣﻘﺎﺑﻞ اﻟﺤﺴﺎس اﻟﺜﺎﻧ‬

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

.‫ﻦ ﻫﻨﺎك ﺣﺮﻛﺔ ﻣﻘﺎﺑﻞ ﻛﻼ اﻟﺤﺴﺎﺳﻴﻦ ﺳﺘﺘﻮﻗﻒ اﻹﺿﺎءة ﻋﻦ اﻟﻌﻤﻞ‬‫إذا ﻟﻢ ﻳ‬

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

.‫ﻮد اﻟﺒﺮﻣﺠ‬‫ء ﺑﻌﺪ رﻓﻊ اﻟ‬‫ﻨﻚ اﺧﺘﺒﺎر ﻣﺸﺮوع اﻟﺪرج اﻟﻤﻀ‬‫ﻳﻤ‬

.‫ ﻓﺼﻞ ﻣﺼﺪر اﻟﻄﺎﻗﺔ ﺑﻌﺪ اﻻﻧﺘﻬﺎء ﻣﻦ اﺳﺘﺨﺪام اﻟﻨﻈﺎم‬‫ﻻ ﺗﻨﺲ‬

14/14

You might also like