الدرس الرابع من تعلم الأردوينو

0

بسم الله الرحمن الرحيم
فى البداية سنقوم بحل التمرين السابق وسنقوم بعمل وميض الى اثنين من الليد
اولا التوصيل :



ثانيا الكود :
int x = 200;
int c = 500;
int led1 = 7;
int led2 = 11;
void setup(){
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
}
void loop(){
  digitalWrite(led1,HIGH);
  delay(x);
  digitalWrite(led1,LOW);
  delay(x);
  digitalWrite(led2,HIGH);
  delay(c);
  digitalWrite(led2,LOW);
  delay(c);
}

حيث قمت بتوصيل اثنين من الليد الى المنافذ 7 و 11

مع مقاومة 330 اوم
الكود :
كما نلاحظ فى هذا الكود انى قمت بتعريف التأخير
الأول والليد الأول
وقمت بتعريف التخير الثاني والمتغير الثانى فى بداية
الكود
ثم قممت بتعريف منافذ الليد كمخرجات كما شرحنا
سابقا وقمت بتكرار كود الوميض مرتين لكل ليد
 ما عليكم هو الذهاب الى التينكر كاد وتجربة هذا المشروع



الموضوع الرابع : المداخل والمخارج الرقمية
إن الموضوع السابق مهم جدا ويجب فهمه
لفهم هذا الموضوع
تتمتع الأردوينو اونو بمداخل عديده حيث تحتوى على
14 مدخل \ مخرج رقمى

6 مداخل تماثلية


حيث فى المربع الأسود توجد المداخل \ المخارج الرقمية
وفى المربع الأحمر توجد المداخل التماثلية
كما قلنا منن قبل ان لكى نخرج اشارةعلى احد المنافذ الرقمية نستخدم امر
digitalWrite(x,y);
x: هنا نضع رقم المدخل
y=)HIGH-LOWهنا نضع قيمة الخرج (

كما استخدمنا هذا الأمر فى كود الوميض السابق
void setup(){
pinMode(10,OUPTUT);
}
void loop(){
digitalWrite(13,1);
delay(200);
digitalWrite(13,0);
delay(200);
}

-تحتوى الأردوينو على لمبة ليد داخلية متصلة على المنفذ الرقمي 13
ولكن إذا اردنا قراءة قيمة رقمية ماذا نفعل ؟
كل ما علينا هو استخدام امر جديد يسمى
digitalRead(x);
يستخدم هذا الأمر لقراءة حالتان فقط كما وضحنا فى الموضوع الثانى  (0-1)
X:نضع هنا رقم المنفذ الذى سنقرء منه

السويتشات ( الأزرار):
لدى الأزرار فائدة كبيرة مع الأردوينو حيث سنستخدمها كثيرا فى المشاريع القادمة
ولكن لا يمكننا استخدام السويتشات بطريقة مباشرة مع الأردوينو لكى نتجنب حدوث خطأ فى الإشارة فيوجد طريقتان يمكن استخدامها ( مقاومة الرفع – مقاومة الخفض)



مقاومة الرفع :
هذا هو التوصيل  فنحن نلاحظ فى قراءة الملتيميتر عند عدم ضغط السويتش يعطى كامل الطاقة 9 فولت


وعند الضغط على السويتر يقرء الملتيميتر قيمة 9 ميكرو فولت وهى قيمة صغيرة لا تؤثر فى شئ
بإختصار شديد عند العمل مع سويتش فى حالة مقاومة الرقع عند الضغط عليه نحصل على حالة صفر
وعند عدم الضغط عليه نحصل على حالة واحد
من مميزات الأردوينو انها تحتوى داخليا على مقاومة رفع
هل تتذكرون امر
pinMode(x,y);
حيث قلنا ان هذا الأمر مستخدم فى تعريف المنافذ اذا كانت مداخل او مخارج
حيث قلنا ان
X: رقم المنفذ
Y: حالة المنفذ إدخال او إخراج او إدخال مع مقاومة رفع
 (OUTPUT – INPUT – INPUT_PULLUP)
 ) تمثل المخارجOUTPUT حيث الخانة الأولى (
  ) والتى تمثل مدخل للبياناتINPUTوالخانة الثانية (
)INPUT_PULLUPوالخانة الثالثة وهى الجديدة (
وهى استخدام مقاومة رفع وغالبا ما تستخدم مع السويتشات 

مقاومة الخفض :

توصل مقاومة الخفض بنفسة الطريقة الموضحة فى الصورة التى فى الأعلى

ونلاحظ عند عدم الضغط نحصل على صفر فولت




وعند الضغط نحصل على 9 فولت
اى بإختصار عند الصغط نحصل على 1
وعند عدم الضغط نحصل على 0
فكما قلنا ان الأردوينو تحتوى على خاصية مقاومة الرفع لكن لا تحتوى على خاصية مقاومة الخفض


سنقوم الأن بعمل مشروع بسيط
عمل وميض لليد وعند الضغط على سويتش يتم تسريع الوميض
فى البداية علينا الذهاب الى التينكر كاد
وبناء التوصيلات اللازمة
كما تلاحظون قمت بتوصيل الليد الى اطرافها المعروفة
وقمت بتوصيل السويتش تبعا لخاصية مقاومة الرفع الى جزء بالمنفذ الرقمى رقم 2
والجزء الأخر بالسالب
بحيث عند الضغط على الزر نحصل على صفر فولت وعند عدم الضغط نحصل على 5 فولت


الكود
يوجد فى الكود اوامر لم نشرحها وسنشرحها فى المضوع القادم ما عليكم هو فهم ما تعرفونه من الكود


 int led  = 11;
int sw = 2;
int d1 = 600;
int d2 = 300;
void setup(){
  pinMode(sw,INPUT_PULLUP);
  pinMode(led,OUTPUT);
}
void loop(){
  int x = digitalRead(sw);
  if(x==0){
            digitalWrite(led,HIGH);
            delay(d2);
            digitalWrite(led,LOW);
             delay(d2);
  }
  else{
               digitalWrite(led,HIGH);
    delay(d1);
             digitalWrite(led,LOW);
            delay(d1);
  }
}
      


وقمنا بتعرف مدتى التأخير السريعة والبطيئة
وقمنا بتعريف المداخل والمخرج كما شرحنا سابقا
نتجه الى الكود الخاص بنا
 فى البداية قمنا بتتعريف متغير يسمى x
وجعلناه يساوى القراءة الرقمية لدى السويتش
كما شرحنا سابقا كيف ننشئ متغيرات
بعد ذلك نتجه الى شئ يسمى شرط
لا تقلقوا سنقوم بشرح الشروط فى درس خاص بها
ان شاء الله
فنقول لو قراءة السويتش كانت صفر يقوم بعمل وميض
لليد مع إٍستخدام التأخير السريع
ولو لم يتحقق الشرط قم بتشغيل الليد مع التأخير البطئ
هكذا افهموا الكود الأن لكن ان شاء الله فى الموضوع
القادم سنشرح الشروط بجزء من التفصيل

والان ننتقل الى موضوع مهم ( اخلاقيات المبرمج)
انتم الان تعتبروا مبرمجين اردوينو مبتدئين فيجب عليكم معرفة هذه القواعد
عند عملك على مشروع مثل مشروع فى شركة ما وانت تكتب الكود يجب ان تكتب ما يسمى تعليق
والتعليق هى جملة لا ينفذها لاكود وانما الغرض  منها شرح للمستخدم ما هو فائدة هذا الجزء من الكود
ولكى نكتب هذ التعليقات لدينا طريقتان
(//اولا : استخدام هذا الرمز (
 ثم تكتب شرحك للكود بعد هذا الرمز لكن هذا 
يكفى لسطر واحد ماذا ان احتجت لكتابة اكثر من سطر لشرح الكود
 ثانيا : استخدام الرمز 
(*/your comment/*)
بحيث بإستخدام هذه الرموز


يمكننا اضافة تعليقات لكى نشرح ماذا يفعل هذا الكود 

مثال مع كود الوميض


/*
This program to make blink to the led
*/
int  x = 11; // led pin
int c = 200;//the delay
void setup(){
pinMode(x,OUTPUT); //define the led an output
}
void loop(){
digitalWrite(x,HIGH); // turn on the led
delay(c); //wiat in this step of the cod for 200 milli seconds
digitalWrite(x,LOW); // turn off the led
delay(c);
}


فى المثال السابق قمنا بإستعمال التعليقات لشرح كل جزئية فى كود الوميض لكى يفهم الكود اى حد ان جاء ليعدل على الكود

فى نهاية موضوع اليوم لقد تعرفنا على العديد من الأشياء وقمنا بشرح المداخل و المخارج الرقمية
والسويتشات وكيفية التعامل معها مع الأردوينو ومقاومة الرفع والخفض والفرق بينهما وقمنا بتنفيذ مشروع لكى نبسط لكم الأمر
وفى النهاية قمنا بشرح اخلاقيات المبرمج والتعليقات
وبهذا ننهى موضوع اليوم

الحمد لله رب العالمين
بقلم : بلال حسان سعدى


لا يوجد تعليقات

أضف تعليق