الانتقال من اللبنات البرمجية في تينكر كاد إلى C - إنترنت الأشياء - ثاني ثانوي
الجزء الأول
1. أسس إنترنت الأشياء
2. إنترنت الأشياء في حياتنا
3. إنشاء تطبيقات إنترنت الأشياء باستخدام الأردوينو
4. إنشاء تطبيق سحابي لإنترنت الأشياء
الجزء الثاني
5 .تطبيقات إنترنت الأشياء المتقدمة
6 .برمجة إنترنت الأشياء باستخدام ++C
7 .الرسائل في إنترنت الأشياء
8. محاكاة شبكة مستشعرات إنترنت الأشياء اللاسلكية
الدرس الثاني الانتقال من اللبنات البرمجية في تينكركاد إلى لغة ++C الانتقال من برمجة اللبنات المرئية إلى البرمجة في ++C Migrating from Visual Blocks Programming to C++ Programming www.ien.edu.s سنتعلم في هذا الدرس كيفية الانتقال من برمجة الأردوينو (Arduino ) بلبنات تينكركاد (Tinkercad) البرمجية إلى برمجته باستخدام لغة البرمجة ++C . تعد اللبنات البرمجية في تينكر كاد مفيدة في تنفيذ النماذج الأولية والمهمات البرمجية البسيطة، إلا أن استخدام ++C يعد ضروريا للاستفادة الكاملة من إمكانات متحكم الأردويو. ستتعلم في هذا الدرس الدوال والحمل الأساسية ليده برمجة متحكم الأردوينو باستخدام لغة ++C mp4 C شكل 6.10 من النسمات البرمجية في تشكر كان إلى البرمجة في ++C يوفر لينكر كان سنة محاكاة لبرمجة الأردوينو بالنمذجة، والتي لا تتطل وجود اردوينه فعليا والوسيلة جهاز المحاسب الإعلان عن المتغيرات والعمليات Pixsal Mam Variable Assignments and Operations يتم إعلان المتغيرات وتغييرها في لبنات تينكر كاد البرمجية من خلال مجموعني أوامر المتغيرات (Variables) والحساب ( Math) . يوضح الجدول الآني أمثلة للأوامر المتاحة. الإعلان عن متغير باسم . لينة تينكر كاد لينة تينكر كام int x = 0; x = 3; CHI تعيين قيمة للمتغير. C++ 228
الانتقال من برمجة اللبنات المرئية إلى البرمجة في ++c
الإعلان عن المتغيرات والعمليات
تغيير قيمة منغير بقيمة محددة. C++ لينة تينكر كاد تنفيذ عملية رياضية بين المتغيرين X ولا E لبنة تينكر كاد تعيين متغير ثالث 2 لناتج عملية رياضية بين المتغيرين * ولا لبنة تينكر كاد إجراء مقاربة رياضية بين المتغيرين x ول. Cont xy لبتة تينكر كاد اجراء مقارنة منطقية بين المتغيرين ول. لبنة تينكركات اجراء عملية منطقية بين عبارتيين. 1++ xy x = y 66 x < y لبنة تينكركات changu سلم
أمثلة للأوامر المتاحة
العبارات الشرطية والتكرارات ورسائل الإخراج Conditional Statements, Loops and Output Messages تنشأ العبارات الشرطية والتكرارات ورسائل الإخراج في البنات تينكر كاد من خلال مجموعات أوامر التحكم (Control) والإخراج (Output) . يوضع الجدول الآتي أسئلة للأوامر المتوفرة. طباعة رسالة على الشاشة التسلسلية ( Serial Monitor). مجموعة لبنات الأوامر المستخدمة مراة التعليم لبنة تينكر كاد لينة تينكر كاد Serial.println( "hello world"); delay(5000); الانتظار 5 ثواني. C++ تنفيذ التعليمات البرمجية داخل لبنة if إذا كان الشرط المنطقي صحيحا. لبنة تينكر كاد if (x < 10) y += 5; تنفيذ التعليمات البرمجية داخل لبنة أن إذا كان الشرط المنطقي صحيحا، لبنة تينكر كاد if (x >= 10 && x < 20) | y = 10; else t y = 20; CH 230
العبارات الشرطية والتكررات ورسائل الإخراج
تنفيذ التعليمات البرمجية داخل لبنة for إذا كان الشرط المنطقي صحيحا. لبنة تينكر كاد for (counter = 0; counter <5; ++counter) { y = 1; } لينة تينكر كاد تنفيذ تكرار while في الحالة الآتية. while (x <= 10) ( 10 } x += 1; مدخلات ومخرجات أطراف أردوينو الرقمية والتناظرية Arduino Digital and Analog Pin I/O يتم التفاعل مع الأطراف الرقمية والتناظرية للوحة الأردوينو في لبنات تينكر كاد مجموعة لبنات الأوامر المستخدمة من خلال مجموعات أوامر الإدخال (Input) والإخراج (Output)، والحساب (Math) في كل مرة يستخدم فيها أحد أطراف الأردوينو التناظرية أو الرقمية. تعرف لبنات تينكر كاد على ما إذا كان سيتم استخدامه للإدخال/ الإخراج الرقمي أو التناظري لاستخدام طرف تحتاج الى تحديد ذللك في دالة ( ) setup في الأردوينو لتوضيح ما إذا كان سيستخدم في الإدخال (Input) أو الإخراج (Output). يتم استخدام الأطراف 109653، 11 مع تعديل قيمة عرض النبضة ( PWM). يعرض الجدول أدناه أمثلة لبعض الأوامر المتوفرة. الحصول على قيمة الطرف الرقمي 4 وتخزينه في المتغير x . C#F لينة تينكر كاد وزارة التعليم and dictal pan pinMode(4, INPUT); x = digitalRead(4);
تنفيذ التعليمات والتكرار
مدخلات ومخرجات أطراف أردوينو الرقمية والتناظرية
TO HIGH ضبط قيمة الطرف الرقمي 4 على قيمة HIGH ( مرتفعة). لبنة تينكر كاد pinMode(4, OUTPUT); digitalWrite(4, HIGH); CHI الحصول على قيمة الطرف التناظري A3 وتخزينه في المتغير . لينة تينكر كاد pinMode(A3, INPUT); y = analogRead (A3); إعداد قيمة الطرف 10 من القيمة التناظرية 15 باستخدام تضمين عرض النبضة (PWM). لبنة تينكر كاد pinMode(10, OUTPUT); analogWrite(10, 15); 1+ أمثلة على الانتقال من لبنات تينكركاد البرمجية إلى لغة ++C Examples of Migration from Tinkercad Blocks to C++ ستنشى أمثلة بسيطة في تينكر كاد للانتقال من برمحة لوحة الأردوينو باستخدام لبنات تينكر كاد البرمجية إلى استخدام لغة البرمجة ++C مثال الدايودات المشعة للضوء الوامضة Blinking LEDs Example ستنشئ برنامجا بسيطا يحتوي على تكرارين يجعلان دايود مشع للضوء يومض 5 مرات و 10 مرات بشدة مختلفة. المكونات المطلوبة: .1 لوحة أردوينو أونو R3، 1 دايود مشع للضوء (LED). يمكن البرمجة بلغة ++C 2 ليكر كاد وذلك بتحويل نوع التحرير من لبنات (Blocks) إلى نص (Test) المكونات المستخدمة في هذا المشروع دابود مشع للصوء ( LED ) اردوينه لونه R3 شكل الي مكونات المشروع وزارة التعليم 232
أمثلة لبعض الأوامر المتوفرة
مثال الدايودات المشعة للضوء الوامضة
التوصيل الدايود الضوئي ثم توصيل Cathode (مهيط) LED ( الدايود المشع الضوء ) الطرف GND ( الطرف الأرضي) اللوحة الاردوينو، وغير لون السلك الى black | الاسود ) . قم بتوصيل Anode ( مصعد الدايود المشع المعصوم (LED) بالطرف Digital ( الرقمي 11 للوحة الأربيل وغير لون السلك إلى green ( الأخضر) 2 برمجة الأردوينو عند تشغيل البرنامج، سيومض الدايود المشع للضوء 5 مرات في الثانية الواحدة. ثم سيومض الدايود المشع للضوء 10 مرات وذلك بفارق 200 ملي ثانية بين كل منها . 1 2 8 UNO 80 ARDUINO int counter; int counter2: vaid setup() ( X pinMode(11, OUTPUT); void loop() { for (counter = 0; counter c 5; ++Counter) ( digitalWrite(11, HIGH); } delay(1000); // Wait for 1000 millisecond(s) digitalWrite(11, LOW); delay (1000); // Wait for 1000 millisecond(s) for (counter2 = 0; counter2 <10; ++counter2){ } digitalWrite(11, HIGH); delay(200); // Wait for 200 millisecond(s) digitalWrite(11, LOW); delay(200); // Wait for 200 millisecond(s) شكل 12 6: توصيل الدايود المبيع للضوء لبنات تینکر کاد مراة التعليم
توصيل الدايود الضوئي
18 المكونات المستخدمة في هذا المشروع مثال إنذار مستشعر الحركة Passive Infrared Sensors (PIR) Alarm Example سنقوم بتوسيع المشروع السابق بإنشاء جهاز إنذار PIR يرسل إشارة لإضاءة ثلاثة دايودات ضوئية مشعة في تتابع سريع. المكونات المطلوبة لوحة أردوينو أونو Arduino Uno R33). دایود مشع للضوء (LED) . مستشعر الحركة (PIR). دايود مشع للضوء (LED) مستشعر الحركة (PIR) أردوينو أوتو A3 المال 6.13 الكومات المستخدمة بالمشروع 1 3 5 OO UNO ABOUTMO 4 ورات التعليم كل 100 نا توصيل الدائرة لإنشاء الدائرة قم توصيل Cathode ( مهبط ) ( LED ) دایود مطبع للضوء ) بالطرف GND (الطرف الأرضي) للوحة الأردوينو، وغير لون السند إلى black ( الأسود) . قم توصيل Anode (مسعد ) ( LED (بدایود منبع للضوء ) بالطرف Digital ( الرقمي ) للوحة الأردوينو وغير لون السند إلى green ( الأخضر) . تم توصيل طرف الشارة PIR (مستشعر الحركة ) بالطرف Digital ( الرقمي 10 للوحة الأردوينو وغير لون الملك إلى اللون orange البرتقالي ). قم بتوصيل طرف المارة PIR (مستشعر الحركة ) بمصدر 5 (5) دولت ) من لوحة الأردوينو وغير لون السلك إلى red ( الأحمر ) تم توصيل GND ( الطرف الأرضي ) لـ PIA ) مستشعر الحركة | الطرف GND (الطرف الأرضي ) للوجه الأردوينو وغير لون السلك إلى black | الأسود ) 234
مثال إنذار مستشعر الحركة
إنشاء الدائرة
برمجة الأردوينو سيتحقق البرنامج مما إذا كان مستشعر (PIR) قد اكتشف كاننا في مجال رؤيته وعند اكتشافه لشيء ما، سيرسل إشارة للدايود المشع الضوء اليومض خمس ومصات سريعة متتابعة لبنات تينكر كاد اختر وضع البرمجة نص (Text) 2 مصر التعليمات البرمجية الرؤية النص التفتح بالغة منوع int counter; void setup() F pinMode(10, INPUT); pinMode(11, OUTPUT); void loop() { if (digitalRead(10) == HIGH) For (counter = 0; counter < 5; ++counter) | } digitalWrite(11, HIGH); delay(300); // Wait for 300 millisecond(s) digitalWrite(11, LOW); delay(300); // Wait for 300 millisecond(s) درارة التعليم دارے
برمجة الأردوينو
محرك تيار مستمر DC TMP مستشعر حرارة TMP36 حرارة التعليم مثال محرك التيار المستمر DC Motor Example ستنشئ دائرة بسيطة للتحكم في محرك DC وفق درجة المكونات المستخدمة في هذا المشروع الحرارة المحيطة به ستحتاج إلى المكونات الآتية . لوحة أردوينو أونو Arduino Une R3) R3). محرك تيار مستمر (DC motor) مستشعر درجة الحرارة (TMP36). 18 لإنشاء الدائرة قم بتوصيل طرف Power ( الطاقة) الخاص بمستشعر درجة الحرارة مطرف 157 5 فولت) من لوحة الأردوينو وغير لون السلك إلى ) ( الأحمر) قم بتوصيل طرف محرج الحمد (Vout) الخاص بمستشعر درجة الحرارة بالطرف التناظري (40) اللوحة الأردوينو وغير لون السلك إلى greer | الأخصر )) قم توصيل الطرف END | الطرف الارضي | الخاص بمستشعر درجة الحرارة بالطرف GND الطرف الأرضي) للوحة الأردوسو وغير لون الملك إلى black ( الأسود). 3 - قم بتوصيل الطرف 1 من محرك DC ( التيار المستمر) طرف GND | الأرضي للوحة الأردوينو وغير لون السلك إلى black ( الأسود ) قم بتوصيل الطرف 2 من من محرك DC (التيار المستمر) الطرف Digital | الرقمي 11 في الأردوينو، وغير لون البنك إلى red الأحمر). 5 أردوينو أونو R3 شکل 515 مكونات المشرع 4 5 1 3 شكل 16 6 توصيل الدائرة CUNO 18 -- & IDUINO 236
مثال محرك التيار المستمر
برمجة الأردوينو سينشئ البرنامج متغيرا باسم temperature وسيتم توصيله بالطرف التناظري AO في لوحة الأردوينو التسجيل درجة حرارة البيئة المحيطة، عندما يصل متغير درجة الحرارة temperature إلى القيمة 27 ( درجة مئوية) في محاكي تينكرباد. ينشط محرك التيار المستمر لمدة ثانيتين. لبنات تینکر کاد الختر وضع البرمجة نص (Text) 2 محرر التعليمات البرمجة الرؤية النص الناتج بلغة عفي يستخدم الكائن التسلسلي (Sorial) للطباعة على الشافية المتسلسلية في الة | setup قوم دالة | اللقاء شهيتة الشاشة التناسلية ليمكن استخدامها لاحقا، يمكن للمتعلم بعد ذلك طاعة القيم والمرسائل على الابنة استخدام دالة ( art رال printin1 مع ملاحظة أن الة ( ) pnatin متضك عطرا جديدا في نهاية الرساله int temperature = 0; void setup() { pinMode(AG, INPUT); Serial.begin(9600); pinMode(11, OUTPUT); void loop() { temperature = analogRead (A0) Serial.println(temperature); if (temperature >= 27) { digitalWrite(11, HIGH); delay(2000); // wait for 2000 millisecond(s) digitalWrite(11, Low); حرارة التعليم
برمجة الأردوينو محرك التيار المستمر
تمرينات 1 اكتب دالة بلغة ++C تستقبل وسيطين عشريين من نوع بيانات float، وإشارة تناظرية، ومضاعفا، مع مراعاة أن تقوم الدالة بتفخيم (مضاعفة الاشارة ثم ارجاعها. 2 ارسم مخطط من يقرأ الدجال اشارة تناظرية من طرف يمثل قراءة درجة الحرارة بالفهرنهايت ثم أنسى حالة تحول هذه القيمة إلى درجات متويد وترسلها إلى طرف كمخرج لناظري. جرارة التعليم
اكتب دالة بلغة +=c تستقبل وسيطين عشريين من نوع بيانات float واشارة تناظرية ومضاعفا
ارسم مخطط ++c يقرأ إدخال إشارة تناظرية من طرف يمثل قراءة درجة الحرارة بالفهرنهايت
ابحث عن خطأ قاعدي | ntax error وخطا منطقي | logical error | لي التعليمات البرمجية الآتية: void loop() [ for (counter = 0; counter <5; --counter) ( digitalWrite(11, HIGH); // Wait For 1000 millisecond(s) delay("1000"); digitalWrite(11, LOW); // Wait For 1000 millisecond(s) delay("1000"); خطا قاعدي خطا منطقي void loop() { temperature = digitalRead(AO); Serial.println(temperature); if (temperature >= 270) | digitalWrite ll, 1); // Wait for 2000 millisecond(s) delay(2000); digitalWrite(II, 0); خطا قاعدي خطا سطقي } } وزارة التعليم
ابحث عن خطأ قاعدي وخطأ منطقي في التعليمات البر مجية التالية
الرسم مخطط ++C للأردوينو يستخدم المعالمة في التمرين الأول ويقرا مدخل اشارة تناظري ثم أنشئ تكرار for يستخدم الدالة فى التمرين الأول لتضخيم الإشارة الأصلية 5 مرات وفي كل مرة تصحم الإشارة ترسل الى طرف كمخرج لناظري 5 التوسع في المثال المسابق الخاص بالدايولات المتعة للضوء الومضة ( LED ) وقم بإضافة دايود مشع للضوء أخر بلون مختلف بيومض كل مرة يتم فيها ايقاف تشغيل الدايود المقع للضوء الأول. جرارة البلد
ارسم مخطط ++c للأردوينو يستخدم الدالة في التمرين الأول
توسع في المثال السابق الخاص بالدايودات المشعة للضوء الوماضة
توسع في المثال السابق الخاص بالإنذار باستخدام مستشعر الموجات تحت الحمراء وقم بإضافة إندار بواسطة مستمر حركة آخر وما يود منع المصو بلون آخر سيوصل كل مستمر حركة بدا يود متع للضوء يومص بشاء على اكتشاف مستمر الحركة الشيء ما 2 قم بضبط محرك التيار المستمرة المثال الخاص باستخدام المحرك لإرسال اشارة تناظرية إلى المحزلك بناء على درجة الحرارة التي يكتنتنها مستمر درجة الحرارة. مرارة الي