Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 20

‫استخدام االردوينو في تشغيل واطفاء‬

‫المصابيح‬

‫‪ :‬أسماء الطالب‬
‫عبداللـــــه احمد جــاسم‬
‫حسيـــــن سالم خلـــــف‬
‫زين العابدين علي هاشم‬

‫‪ :‬المشرف‬
‫األستاذ خزعل هاتو‬
‫الجامعه التقنية الجنوبية \ المعهد التقنيـ ميسان \ قسم‬
‫تقنياتـ الكهرباءـ‬
‫اإلهداء‬
‫إلى من أُفضِّ لها على نفسي‪ ،‬ولِ َم ال؛ فلقد ضحَّت من أجلي‬
‫ولم ت َّدخر جُه ًدا في سبيل إسعادي على ال َّدوام‬
‫‪).‬أُ ِّمي الحببية(‬
‫نسير في دروب الحياة‪ ،‬ويبقىـ من يُسيطرـ على أذهاننا‬
‫في كل مسلك نسلكه‬
‫‪.‬صاحب الوجه الطيب‪ ،‬واألفعال الحسنة‬
‫ي طيلة حياته‬
‫فلم يبخل عل َّ‬
‫‪).‬والدي العزيز(‬
‫إلى أصدقائي‪ ،‬وجميع من وقفوا بجواري وساعدوني بكل‬
‫ما يملكون‪ ،‬وفي أصعدة كثيرة‬
‫‪.‬أُق ِّدم لكم هذا البحث‪ ،‬وأتمنَّىـ أن يحوز على رضاكم‬
‫شكر وتقدير‬

‫يسرني تقديم هذا الشكر لوالدي ووالدتي اللذان سهرا على‬


‫تربيتي وتعليمي منذ أن بدأت حياتي‪ ،‬وأشكر كل من درسني‬
‫أو ساهم في تدريسي من دكاترة الجامعه التقنيه \ المعهد‬
‫التقني ميسان\ قسم تقنيات الكهرباء ‪ ,‬وكل األساتذة الذين‬
‫يرجع لهم الفضل بعد هللا عز وجل في تلقيني العلم والمعرفه‪،‬‬
‫كما اقدم الشكر والتقدير لألساتذة المشرفين على هذا البحث‬
‫المتواضع‪ ،‬الذي اسال هللا تعالى أن يضيف قيمة إلى هذا العلم‬

‫المصادر ‪:‬‬
‫موقع ويكيبيديا‬
‫‪https://ar.wikipedia.org‬‬
‫موقع اليكترونيك بوب ‪https://www.electronicbub.c‬‬
‫‪om‬‬
‫موقع انا مهندس‬
‫‪https://www.anaengineer.com‬‬
‫‪ :‬مقدمه‬
‫اآلردوينو) هو لوح تطوير إلكتروني يتكون من دارة إلكترونية‬
‫مفتوحة المصدر مع متحكم دقيق يُبرمج عن طريق الحاسوب‪ ،‬وهو‬
‫مصمم لتسهيل استخدام اإللكترونيات التفاعلية في المشاريع متعددة‬
‫التخصصات‪ .‬يُستخدم اآلردوينو بصورة أساسية في تصميم‬
‫المشاريع اإللكترونية التفاعلية أو المشاريع التي تستهدف بناء‬
‫حساسات بيئية مختلفة كدرجات الحرارة‪ ،‬الرياح‪ ،‬الضوء والضغط‬
‫وغيرها‪ ...‬يّمكن توصيل اآلردوينو ببرامج مختلفة على الحاسب‬
‫الشخصي‪ ،‬ويعتمد في برمجته على لغة البرمجة مفتوحة المصدر‬
‫بروسيسنج‪ ،‬وتتميز األكواد البرمجية الخاصة بلغة اآلردوينو أنها‬
‫تشبهه لغة السي وتعتبر من أسهل لغات البرمجة المستخدمة في‬
‫كتابة برامج المتحكمات الدقيقة‪ .‬أثبتت بعض الدراسات أن شرائح‬
‫اآلردوينو تعتبر مدخل مهم يسهل من خالله معرفة مبادئ عن علوم‬
‫الحاسب‪ ،‬هندسة الكهرباء والميكانيكا وكذلك الحرف والفنون‪،‬‬
‫مجتمعة في بيئة واحده‬
‫‪ :‬تاريخة‬
‫ظهرت فكرة جهاز اآلردوينو عام ‪2005‬م في مدينة إيفريا‬
‫اإليطالية‪ ،‬حيث أطلق ماسيمو بانزى بالتعاون مع دايفيد كوارتيليس‬
‫‪" (Arduin of‬وجاينلوكا مارتينو بإطالق مشروع "أردوين إيفريا‬
‫و ُس ّم ّي المشروع باسم أشهر شخصية تاريخية في المدينة‪Ivrea) .‬‬
‫وكان الهدف األساسي للمشروع هو عمل بيئة تطوير للمتحكمات‬
‫‪ .‬دقيقه بصوره مفتوحه المصدر ‪ 100‬في المئة‬
‫‪ :‬بعض مميزات االردوينوـ‬
‫البساطة‪ :‬قطعة اآلردوينو مصممة لتناسب احتياجات الجميع‪،‬‬
‫‪.‬محترفين‪ ،‬أساتذة‪ ،‬طالب وهواة اإللكترونيات التفاعلية‬
‫أقل ثمنا ً مقارنةً مع األلواح األخرى من نفس النوع فثمن أغلى‬
‫‪ $.‬الثمـــن‪ :‬لوح اآلردوينو ال يتجاوز ‪50‬‬
‫التركيب الذاتي‪ :‬يمكنك تحميل ورقة البيانات الخاصة مجانا ً من‬
‫الموقع الرسمي و شراء القطع وتركيبه بنفسك‬
‫متعدد المنصات‪ :‬برنامج اآلردوينو له القدرة على االشتغال على‬
‫الماك والليننكس والويندوز وأغلب المتحكمات اإللكترونية األخرى‬
‫‪ ..‬تشتغل فقط على الويندوز‬

‫كيفية تشغيل مصباح ‪ LED‬صغير باستخدام االردينو ‪:‬‬


‫اوال يجب ان نعرف ان ‪ LED‬عبارة عن ثنائي يتكون من قطعتين‬
‫من السلسيكون احداهما مطعمة بذرة شائبة خماسية التكافؤ تسمى ‪N‬‬
‫وقطعة ثانية من بلورة سليكون مطعمة بشائبة ثالثية التكافؤ تسمى‬
‫‪ P‬ويعتبران طرفا الثنائي يطليان بمادة فلزية لربطهما بدائرة‬
‫كهربائية خارجية‬
‫‪:‬تجربتنا اليوم تحتاج الى‬
‫‪-‬اردوينو ‪1‬‬
‫‪led 2-‬‬
‫‪ -3‬مقاومة ‪ 1‬اوم‬
‫‪-‬اسالك توصيل ‪4‬‬
‫‪ -5‬بورد للتوصيل‬

‫طريقة الربط ‪:‬‬


: ‫كود التشغيل‬
int led1 = 13;

()void setup{
pinMode(led1,OUTPUT);
}

()void loop {
digitalWrite(led1,HIGH);
delay (1000);
digitalWrite(led1,LOW);
delay(1000);
}
‫برمجة األردوينوـ بطرق مختلفة للتحكم في ‪LED‬‬
‫باستخدام ‪:Switch‬‬
‫‪ -1‬إضاءة ‪ LED‬بمجرد الضغط على الزر‪/‬المفتاح وإيقافه‬
‫‪:‬‬
‫في هذا المشروع نحتاج إلى مجموعة مكونات وهي‪:‬‬
‫‪Arduino UNO‬‬
‫‪Breadboard‬‬
‫‪push Button switch × 1‬‬
‫‪Red LED × 1‬‬
‫‪220Ω Resistor × 1‬‬
‫‪10kΩ Resistor × 1‬‬
‫طريقة الربط بين المكونات كاالتي ‪:‬‬
‫شرح توصيالت المشروعـ ‪:‬‬
‫في الرسم كما موضح لقد قمت بتوصيل طرف الليد الموجب‬
‫(‪ )+‬مع المقاومة ‪ 220‬اوم ثم وصلته بالـ ‪ Pin‬رقم ‪ 13‬بلوح‬
‫األردوينو‪ .‬والطرف السالب لليد قمت بتوصيله مباشرة بالـ‬
‫‪ Pin‬ال ‪ GND‬الموجودة باالردوينو‪.‬‬
‫لقد قمت بتوصيل طرف من أطراف ‪ Switch‬بالـ ‪ Pin‬الـ ‪5V‬‬
‫باالردوينو‪ .‬الطرف الثاني قمت بتوصيله بالـ ‪ pin‬رقم ‪ 2‬للوح‬
‫االردوينو‪ .‬وقمت بتوصيل الطرف الثاني للـ ‪ switch‬ايضا ً‬
‫بالمقاومة ‪ 10k‬أوم على التوالي مع ‪ pin‬ال ‪ GND‬لإلردوينو‪.‬‬
‫الهدف‪ ..‬من توصيل الـ ‪ switch‬او المفتاح بهذا الشكل هو أنه‬
‫عندما يكون في حالته األساسية (أي‪ :‬غير مضغوط) يكون‬
‫الجهد على الـ ‪ pin‬رقم ‪ 2‬لإلردوينو هو جهد ‪ GND‬أي‬
‫يساوي ‪ 0V‬ويطلق على هذه الحالة ‪ .LOW‬وعندما يكون في‬
‫حالته الثانية (أي‪ :‬مضغوط) يصبح الجهد على ‪ pin‬رقم ‪2‬‬
‫لإلردوينو هو جهد ‪ 5V‬ويطلق على هذه الحالة ‪ .HIGH‬وهذه‬
‫هي اإلشارات الرقمية التي سوف نقوم بإستخدامها مع‬
‫األردوينو‪ ،‬والتي بناءاً عليها سوف يقوم بتنفيذ أوامر معينة‪..،‬‬
‫مثل إضاءة الليد أو إطفائه‪.‬‬
‫خطوات البرمجة ‪:Programming‬‬
‫سوف نقوم بتوصيل االردوينو بالكمبيوتر من خالل الكابل‬
‫‪ .USB type A/B‬ونقوم بفتح برنامج ‪ Arduino‬ثم نقوم‬
‫بظبط اإلعداد‪ ،‬وهي الخاصة بتعريف نوع االردوينو‪ :‬اتبع‬
‫الخطوات التالية‪..‬‬
‫‪ UNO | 1‬من نافذة البرنامج‪ :‬اضغط في الشريط من فوق‬
‫على ‪Tools > Board > Arduino Genuino UNO‬‬
‫‪ | 2‬األمر الثاني اسم ‪ Port‬المستخدمة لتوصيل االردوينو‬
‫بالكمبيوتر‪ .‬و تتأكد من انك مستخدم ‪ COM‬الصحيح‪ :‬اضغط‬
‫على ‪Tools > Port‬‬
‫‪ | 3‬بعد ذلك افتح مشروع جديد‪ ،‬من خالل الضغط في اعلى‬
‫البرنامج على ‪.File > New project‬‬

‫ثم نضع الكود التالي ‪:‬‬


‫الكود‬
const int LED = 13;
const int BUTTON = 2;
int ButtonState = 0;
void setup(){
pinMode(LED,OUTPUT);
pinMode(BUTTON,INPUT);
}

void loop(){
ButtonState = digitalRead(BUTTON);
if(ButtonState == HIGH){
digitalWrite(LED,HIGH);
}
else{
digitalWrite(LED,LOW);
}
}
‫شرح أوامر البرنامج (الكود) ‪:‬‬
‫في الجزء األول من الكود قمت بكتابة السطور التالية‪:‬‬
‫;‪const int LED = 13‬‬
‫;‪const int BUTTON = 2‬‬
‫;‪int ButtonState = 0‬‬
‫وهذا الجزء الذي يكتب فيه الثوابت و المتغيرات‪ .‬فمثالً لما كتبنا‬
‫‪ ;const int LED = 13‬هنا نجعل للمتحكم أو لإلردوينو أن ‪LED‬‬
‫هي ثابت ويساوي ‪ 13‬وال يتغير‪..‬‬
‫تعتبر هذه الخطوه انك بُعيد تسمية رقم ‪ 13‬بـ ‪( LED‬وهو رقم‬
‫المخرج ‪ pin‬الذي قمنا بتوصيل عليه الليد)‪ .‬والهدف منها هو‬
‫استخدام ‪ LED‬أثناء كتابه البرنامج‪ ،‬وتسهيل عملية الكتابة ومراجعة‬
‫الكود البرمجي‪ .‬وإذا قمنا باالستغناء عن هذا األمر وكتبت رقم ‪13‬‬
‫في البرنامج‪ ،‬فسوف يعمل بدون اي مشاكل‪.‬‬
‫والسطر الثاني ايضا ً هو نفس الفكرة هو ثابت ‪ BUTTON‬وأنه‬
‫يساوي ‪.2‬‬
‫اما في السطر الثالث فإنه يختلف عن السطرين األولين‪ .‬ألنه متغير‬
‫وليس ثابت‪ ،‬بمعنى أنه سوف تتغير قيمته بقيم أخرى‪.‬‬
‫في الجزء الثاني من الكود هو الجزء الذي تقوم من خالله بتعريف‬
‫المداخل والمخارج ويبدأ بـ ‪:)(Void setup‬‬
‫{)(‪void setup‬‬
‫;)‪pinMode(LED,OUTPUT‬‬
‫;)‪pinMode(BUTTON,INPUT‬‬
‫}‬
‫في كتابة الكود البرمجي من المهم جداً ان تقوم بتحديد أي األطراف‬
‫اللي هتكون دخل ‪ Input‬واي األطراف اللي هتكون خروج‬
‫‪ .Output‬وهذا من خالل األمر‪:‬‬
‫)‪;pinMode(pin number , state‬‬
‫مكان ‪ pin number‬بنضع رقم الـ ‪ ،pin‬مثلما فعلت عند كتابتي‬
‫للكود‪ ،‬حيث قمت بكتابة ‪ LED‬وهذا النها تعبر عن ‪ Pin‬رقم ‪.13‬‬
‫ومكان ‪ state‬بنضع حالة ‪ pin‬هل هي دخل ‪ Input‬مثل الـ‬
‫‪ .Switch / Button‬وال هي خرج ‪ Output‬مثل الـ ‪ .LED‬وانا‬
‫حددت أن الـ ‪ Switch / Button‬سيكون ‪ ،Input‬الن المفتاح‬
‫وظيفته انه يدخل اشارة رقمية يا اما قيمتها ‪ 5V‬اما ‪ .0V‬لذلك‬
‫سيكون ‪ .Input‬أما في حالة ‪ LED‬فأنا حددت انه سيكون ‪Output‬‬
‫النه سوف يتم اخراج عليه جهد اما ‪ 5V‬ليضئ اما ‪ 0V‬ليطفئ‪ .‬لذلك‬
‫سيكون ‪ .Output‬والننسى أن ‪ pinMode‬بيتكتب داخل الدالة‪:‬‬
‫}‪void setup( ){here‬‬
‫وفي هذا المشروع الهدف أن االردوينو يقوم بتشغيل الليد عند‬
‫الضغط على ‪ Button / Switch‬ويغلقه بمجرد إزالة اصبعي عنه‪.‬‬
‫ابدأ اصيغ هذه الجملة في هيئة اكواد يفهمها األردوينو‪ .‬وسوف اقوم‬
‫بكتابتها داخل الدالة الرئيسية‬
‫} {)(‪void loop‬‬
‫واألوامر ستكون كالتالي‪:‬‬
‫;)‪ButtonState = digitalRead(BUTTON‬‬
‫{)‪if(ButtonState == HIGH‬‬
‫;)‪digitalWrite(LED,HIGH‬‬
‫}‬
‫{‪else‬‬
‫;)‪digitalWrite(LED,LOW‬‬
‫}‬
‫في أول أمر‪ ،‬قمت بكتابة = ‪ButtonState‬‬
‫)‪ ;digitalRead(BUTTON‬وسابقا أعاله كنت قد عرفت ثابت‬
‫‪ BUTTON‬بأنه يعبر عن الـ ‪ pin‬رقم ‪ ،2‬هنا انا استخدمت‬
‫‪ BUTTON‬بدالً من ذكر رقم ‪ .2‬ومن خالل األمر‬
‫)‪ digitalRead(BUTTON‬فانا اجعلة يقوم بقراءة القيمة التي على‬
‫الـ ‪ pin‬رقم ‪ .2‬القيمة هذه في حالتنا ستكون اما ‪ HIGH‬وهذا في‬
‫حالة الـ ‪ Switch‬مضغوط اما ‪ LOW‬في حالة انه غير مضغوط‪.‬‬
‫ولكن ماذا عن الجزء الثاني من األمر؟‪ ..‬ثم اجعلة يقوم بتخزين قيمة‬
‫هذه القراءة في متغير اسمه ‪.ButtonState‬‬
‫ثم بعد ذلك‪..‬‬
‫لو كانت قراءتك للمدخل رقم ‪ 2‬تساوي ‪ HIGH‬خرج على المخرج‬
‫‪ )LED( 13‬قيمة ‪ ..، HIGH‬وإن لم يكن‪ ..‬اجعل قيمته ‪ .LOW‬هذا‬
‫الذي انا وضحته له من خالل الجملة الشرطية ‪if ..else‬‬

‫{)‪if(ButtonState == HIGH‬‬
‫;)‪digitalWrite(LED,HIGH‬‬
‫}‬
‫{‪else‬‬
‫;)‪digitalWrite(LED,LOW‬‬
‫}‬
‫واألمر ‪ digitalWrite‬هو المسئول عن تطبيق الخرج اذا كان‬
‫خرج ‪ HIGH‬او خرج ‪ .LOW‬حيث نقوم بكتابة داخله رقم المخرج‬
‫وهو ‪ 13‬وتعبر عنه بـ ‪ LED‬والخرج المراد تطبيقه عليه وهو يا اما‬
‫‪ HIGH‬او ‪ .LOW‬ملحوظة‪ HIGH :‬تعني ‪ 5V‬و ‪ LOW‬تعني ‪. .0V‬‬

‫‪ -2‬اضاءة ‪ LED‬وإطفائه بمجرد الضغط على الزر‪.‬‬


‫سنقوم بتعديل بسيط على الكود بحيث نجعل الليد تعمل كفالش‬
‫بضغطة زر واحدة‪ .‬والتعديالت التي سوف نقوم بها في الكود هي‬
‫إضافة أمر جديد اسمه ‪ .)(delay‬ووظيفة األمر هذا انه يقوم بتأخير‬
‫ وهذ الكود بعد‬.‫ وانت الذي تحدد هذه الفترة‬،‫حالة الليد لفترة معينة‬
: ‫التعديل‬
const int LED = 13;
const int BUTTON = 2;
int ButtonState = 0;

void setup(){
pinMode(LED,OUTPUT);
pinMode(BUTTON,INPUT);
}

void loop(){
ButtonState = digitalRead(BUTTON);
if(ButtonState == HIGH){
digitalWrite(LED,HIGH);
delay(100);
digitalWrite(LED,LOW);
delay(100);
}
else{
digitalWrite(LED,LOW);
‫}‬
‫}‬
‫التعديالت التي قمت بها للكود في ثالث سطور ‪ :‬األول هو‬
‫)‪ ، ;delay(100‬وهذا األمر وظيفته كما ذكرنا سابقا انه يأخر حالة‬
‫الليد لفترة معينة بالملي ثانية هنا كتبت ‪ 100‬اي ‪ 100‬ملي ثانية‪ .‬ثم‬
‫بعد ذلك كتبت األمر الثاني وهو )‪;digitalWrite(LED,LOW‬‬
‫يعني خرج ‪ 0V‬على الليد يعني اقفله ثم انتظر ‪ 100‬ملي ثانية‪.‬‬
‫تفسير ‪ :‬األردوينو سوف يبدأ بقراءة قيمة ‪ pin‬رقم ‪ 2‬لو وجدها‬
‫‪( HIGH‬المفتاح مضغوط) سينفذ األوامر التي داخل الجملة‬
‫الشرطية ‪if‬؛ و األوامر هي انه يشغل الليد لمدة ‪ 100‬ملي ثانية‬
‫ويطفئه لمدة ‪ 100‬ملي ثانية‪.‬‬
‫ثم ينتقل الى األمر ‪ else‬يجد أن شرط ‪ else‬لم يحقق؛ ألنه يشترط‬
‫ان قراءة المدخل رقم ‪ 2‬تكون ‪( LOW‬المفتاح غير مضغوط) لكي‬
‫يقوم بإطفاء الليد‪ .‬ويرجع يكرر االردوينو نفس األوامر فتظهر لك‬
‫النتيجة النهائية هي ان الليد يعمل ويطفئ بشكل متكرر طالما انك‬
‫ضاغط على المفتاح‪ ،‬ولما ترفع اصبعك عنه سوف يطفئ تماما ً‪.‬‬

‫‪-3‬مفتاحـ لتشغيل الـ ‪ LED‬ومفتاح آخر إليقافه ‪:‬‬


‫والهدف من هذا المشروع هو انه نقوم بتشغيل الليد بال‪Switch‬‬
‫لوحده ونقوم بغلقه من خالل ‪ Switch‬آخر‪ .‬وقد وضحت توصيالت‬
‫الدائرة وتوصيل المفتاح الثاني في الصورة التالية‪:‬‬
‫وصلت مفتاح ثاني بنفس طريقة المفتاح األول‪ .‬ولكن قمت بتوصيل‬
‫الطرف الثاني له بـ ‪ pin‬رقم ‪ 3‬باألردوينو‪ .‬والتوصيالت األخرى‬
‫كما هي‪ .‬نبدأ بكتابة البرنامج (الكود) ‪:‬‬
‫;‪const int LED = 13‬‬
‫;‪const int BUTTONon = 2‬‬
‫;‪const int BUTTONoff = 3‬‬

‫{) (‪void setup‬‬


pinMode(LED,OUTPUT);
pinMode(BUTTONon,INPUT);
pinMode(BUTTONoff,INPUT);
}

void loop(){
if(digitalRead(BUTTONon) == HIGH){
digitalWrite(LED,HIGH);
}
else if(digitalRead(BUTTONoff) == HIGH){
digitalWrite(LED,LOW);
}
}
:‫وفي الكود اعالة قمنا ببعض التعديالت‬
‫ وهذا للتمييز‬BUTTONon ‫ الى‬BUTTON ‫ غيرت ثابت وهو‬-1
.‫ الثاني الذي قمنا بإضافته‬Switch‫بينه وبين ال‬
‫ رقم‬pin ‫ ويعبر عن‬BUTTONoff ‫ قمنا بإضافة ثابت جديد وهو‬-2
.Input ‫ على أنه‬void setup ‫ وحددته ايضا ً في‬،3
‫؛ وهذ امر بيسمح لي ان اضيف‬else if ‫ اضفنا أمر جديد وهو‬-3
.if ‫شرط تاني مع الشرط األول‬
‫تفسير الكود ‪:‬‬
‫االردوينو سوف يقوم في أول أمر الـ ‪ if‬بالتأكد إذا كان الشرط‬
‫الموجود به متحقق او ال‪ .‬وذلك من خالل قراءة الـ ‪ pin‬رقم ‪ 2‬لو‬
‫وجدها ‪( HIGH‬المفتاح مضغوط) ينفذ األمر الذي بداخل الجملة‬
‫الشرطية وهو إخراج اشارة ‪ HIGH‬على الـ ‪ pin‬رقم ‪( 13‬إضاءة‬
‫الليد)‪.‬‬

‫ثم ينتقل الى األمر الثاني وهو ‪ else if‬والتاكد اذا كان الشرط‬
‫الموجود به متحقق او ال‪ .‬وذلك من خالل قراءة الـ ‪ pin‬رقم ‪ 2‬لو‬
‫وجدها ‪( HIGH‬المفتاح مضغوط) ينفذ األمر اللي بداخلها وهو‬
‫إخراج اشارة ‪ LOW‬على الـ ‪ pin‬رقم ‪( 13‬إطفاء الليد)‪.‬‬

‫النتيجة النهائية هى أنك بمجرد الضغط على المفتاح األول سوف‬


‫يضيء الليد‪ .‬وبمجرد الضغط على المفتاح الثاني سوف يطفئ الليد‪.‬‬

‫النهاية‬

You might also like