اردوينو – الدرس الحادي عشر – اصدار الأصوات

في هذا الدرس ستتعلم كيفية اصدار الاصوات بمتحكم الأردوينو.
اولاً ستقوم بتشغيل مقطع صوتي ، ثم القيام بالتلاعب بمستوى الصوت عبر المستشعر الضوئي ‘photocell’.

making sounds

القطع المطلوبة

1 kΩ Resistor

1 kΩ Resistor

Piezo sounder

Piezo sounder

سماعة البيزو

photocell

Photocell
المستشعر الضوئي

Half-size Breadboard

Half-size Breadboard

Arduino Uno R3

Arduino Uno R3

Jumper wires

Jumper wires

تشغيل المقطع الصوتي

في هذا الجزء ستجد ان سماعة البيزو ‘piezo buzzer’ موضوعه على لوح التجارب . واحده من ارجل القطعه موصولة بالمجال الأرضي GND والرجل الأخرى مربوطه بالمنفذ الرقمي digital pin 12 .

piezo breadbaord

piezo breadboard2

قم برفع الكود البرمجي التالي على متحكم الأردوينو

 

لتشغيل مقطع صوتي ، تقوم بتحديد المجال الترددي . انظر للجزء التالي من الدرس المخصص للصوت .
كل مجال ترددي لكل نوته صوتية تم الاحتفاظ به في مصفوفه ‘array’ . المصفوفه ‘array’ هي مثل القائمة ، وبذلك يتم تشغيل المقطع عبر الانتقال لكل نوته صويته بالقائمه.

في حلقة ‘for’ loop سيبدأ العد من 0 وحتى 9 باستخدام القيمه i . للحصول على المجال الترددي للنوته الصوتية لتشغيلها بكل خطوه نقوم باستخدام ‘tone‘. هذا يعني ان القيمة الموجودة في مصفوفة ‘tones’  في موضع ‘i’
كمثال ، قيمة ‘[0]tones’ هي 261 ، وقمية ‘[1]tones’ هي 277 .. وهكذا ..

الأمر ‘tone’ في الأردوينو  يقوم بأخذ متغيرين اثنين ، الأول هو المنفذ الذي يقوم بتشغيل المقطع الصوتي والثاني هي التردد الصوتي للمقطع لتشغيله.

عند الانتهاء من تشغيل من جميع النوتات الصوتية ، أمر ‘noTone’ يقوم بإيقاف تشغيل الصوت.

كان بإمكاننا  ان نضع الكود البرمجي لتشغيل الاصوات داخل دالة loop عوضاَ عن دالة setup وذلك لأنها ستكرر المقطع الصوتي مره بعد مره دون توقف مما سيتسبب بالإزعاج لذلك تم وضعه داخل دالة setup
لذلك دالة loop فارغة .

لاعادة تشغيل المقطع الصوتي كل ماعليك فعله هو الضغط على زر reset الموجود بمتحكم اردوينو .

الصوت

الصوت هو عبارة عن ذبذبة في ضغط الهواء . سرعة الذبذبة (دورات بالثانية أو هيرتز ) هي مايصدر الصوت. كلما زادت قوة الذبذبة كلما زاد علو الصوت.

piezo

المتوسط C عادة يعرف بالتردد 261Hz. وكأنك قمت بتشغيل واطفاء منفذ رقمي ‘digital pin’ لاكثر من 261 مره بالثانية .

لسماع النتيجة ، علينا القيام بتركيب قطعه تقوم بترجمة التردادت الالكترونية إلى صوت . هذا يمكن عن طريق تركيب سماعات كبيره او عبر استخدامنا لسماعة البيزو ‘piezo sounder’.

سماعة piezo تستخدم نوع خاص من الكريستال تتمدد وتنكمش كتردد الكتروني والتي ينتج عنها الصوت.

آلة Pseudo-Theremin الموسيقية

هذه الآلة تقوم بإصدار اصوات غريبة عند تمرير يدك امامها ،
سنقوم بصنع آلة مشابهه في الوظيفة للتحكم والتأثير على مستوى الصوت بمجرد تمرير يدك فوق المستشعر الضوئ ‘photocell’.

سنقوم باضافة المستشعر الضوئي ‘photocell’ و المقاوم resistor للوح التجارب.

piezo breadboard

الكود البرمجي للأردوينو

قم برفع الكود التالي على متحكم الاردوينو

الكود واضح ، نستخدم المنفذ التناظري ‘analog pin’  للقراءة من A0 لقياس الضوء. وستكون القيمة مابين 0 و 700.

اضفنا القيمة 200 لجعل التردد 200Hz كأقل تردد ، وببساطه يتم اضافة القراءه عبر قسمة القيمة على 4 ، لاصدار تردد مابين 200Hz و 370Hz.

امور اخرى عليك القيام بها

حاول تغيير القيمة 4 بالسطر التالي لخفض القيم المرتفعة

 

تغيير القيمه سيرفع أو يقلل من التردد اعتماداً على الرقم الذي قمت بوضعه.

حاول التلاعب بقيم النوتات الصوتية لترى ماذا سيحدث..

اردوينو – الدرس العاشر– استشعار الاضاءة

ستتعلم في هذا الدرس كيفية قياس قوة الاضاءة باستخدام المدخل التناظري ‘analog input’.
ستستخدم ماتعلمته في الدرس التاسع، واستخدام قوة الاضاءة بالغرفة للتحكم في عدد مصابيح الـLEDs التي يتم اضاءتها.

sensing light

تم استبدال المقاوم المتغير ‘pot’ في الدرس التاسع ووضعنا مكانه المستشعر الضوئي ‘photocell’

القطع المطلوبة

5mm Red LED

5mm red LED

عدد 8

270 Ω Resistors

270 Ω Resistors

عدد 8

1 kΩ Resistor

1 kΩ Resistor

74HC595 Shift Register

74HC595 Shift Register

Photocell

Photocell

المستشعر الضوئي

Half-size Breadboard

Half-size Breadboard

Arduino Uno R3

Arduino Uno R3

Jumper wires

Jumper wires

تصميم لوح التجارب

تصميم الدائرة في هذا الدرس هو نفس التصميم بالدرس التاسع ولكن قمنا باستبدال المقاوم المتغير ‘pot’ بـالمستشعر الضوئي ‘photocell’ و مقاومة 1 kΩ .

التالي هو تصميم لوح التجارب من الدرس التاسع

lesson 9

فقط قم بازالة المقاوم المتغير ‘pot’ واستبداله بالمستشعر الضوئي’photocell’ ومقاوم ..كالتالي

lesson 10

المستشعر الضوئي photocell

المستشعر الضوئي ‘photocell’ يعتبر مقاوم يعتمد على الضوء ويدعى احيانا بـ’LDR’ وذلك اختصار لـ Light Dependent Resistor.

المستشعر الضوئي يملك قوة مقاومه تصل حتى 50kΩ في الظلام الدامس و 500Ω عند وجود الاضاءة . يمكنان بواسطة متحكم الأردوينو أن نقرأ قيمة المقاومه للمستشعر عبر مدخل تناظري ‘Analog input’

أسهل طريقة للقيام بهذا هو ربطها مع مقاوم ثابث

photocell_fixedResistor

المقاوم الثابت  والمستشعر الضوئي ‘photocell’ معاً يعتبرون كالمقاوم المتغير ‘pot’، اعتماداً على كمية الضوء المسلطه على المستشعر الضوئي ‘photocell’ يتغير قدر المقاومة التي يقوم بها المستشعر الضوئي ‘photocell’
فاذا كانت كمية الضوء مشعة بالقدر الكافي فإن كمية المقاومه التي ينتجها المستشعر الضوئي أقل من المقاومه الثابته وبالتالي فكأنها عباره عن مقاوم متغير ‘pot’ تم رفع قيمة للقيمه القصوى. والعكس صحيح..

قم برفع الكود البرمجي التالي بمتحكم الأردوينو وقم بتغطيه المستشعر الضوئي بيدك ورفعها مره اخرى لترى مدى التأثير.

كود أردوينو البرمجي

الكود التالي مشابه للدرس التاسع ولكن نظراً لإستخدامنا للمستشعر الضوئي قمنا ببعض التغيرات البسيطه

 

أول شيء قمنا بتغييره هو تسيمة المنفذ التناظري ‘analog pin’ من ‘potPin’ إلى ‘lightPin’  وذلك قمنا بتبديل المقاوم المتغير ‘pot’ بالمستعشر الضوئي ‘photocell’ .

التغيير الآخر هو السطر الذي يقوم باحتساب عدد مصابيح الـLEDs لإضاءتها

هذه المره قمنا بقسمة القراءة على 57 بدلاً من 114 من الدرس التاسع . بمعنى آخر قمنا بقسمتها على نصف القيمة السابقه  حتى نقوم بتوزيعها على 9 مجموعات، ابتداءاً من (حيث لايتم اضاءة أي من المصابيح الثمانية) وحتى (اضاءة جميع المصابيح الثمانية) ، العامل الاضافي هو حساب قيمة المقاومه الثابته 1kΩ
هذا يعني انه عندما تكون قيمة المستشعر الضوئي ‘photocell’ هي 1kΩ (نفس قيمة المقاوم الثابت ) يتم قراءة الصف 1023 وقسمته على 2 = 511 . بذلك يتم اضاءة جميع المصابيح (numLEDSLit ستكون 9)

امور اخرى عليك القيام بها

لتغيير مقدار حساسية المستشعر للضوء قم بتغيير القيمة 57 التي يتم قسمة القراءه عليها.

زيادة القيمه ستجعل من المستشعر أقل حساسية.

اردوينو – الدرس التاسع – المدخلات التناظرية Analog inputs

مقدمة

في هذا الدرس ، سنقوم بإستخدام الإتصال التسلسلي (Serial Monitor) لعرض قراءات المدخلات التناظرية “Analog Inputs” ومن ثم اضافة 8 مصابح LED (من الدرس الخامس) لتتمكن من التحكم بزيادة وتقليل درجة اضاءة الـLEDS عبر المقاوم المتغير (Variable resister)

analog inputs

القطع المطلوبة

للقيام بهذه التجربة تحتاج القطع التالية

5mm red LED

5mm red LED

عدد 8

270 Ω Resistors

270 Ω Resistors

عدد 8

74HC595 Shift Register

74HC595 Shift Register

10 kΩ variable resistor مقاوم متغير

10 kΩ variable resistor
مقاوم متغير

Half-size Breadboard

Half-size Breadboard
لوح تجارب حجم متوسط

Arduino Uno R3

Arduino Uno R3

Jumper wires

Jumper wires

التجربة

قبل البدء بإستخدام مصابيح الـLEDs ، تستطيع القيام بالتجربة التالية عبر إستخدام المقاوم المتغير (potentiometer) و تفعيل خاصية شاشة الاتصال التسلسلي (Serial Monitor) في الأردوينو

قم بتوصيل لوح التجارب كالتالي

pot circuit

قم برفع الكود التالي بالأردوينو

 

والآن ، قم بفتح شاشة الإتصال التسلسلي (Serial Monitor)

serial monitor

قم بتحريك وتغيير المقاومة وسوف ترى القراءات تتغير مابين 0 و 1023

شاشة الاتصال التسلسلي (Serial Monitor) تقوم بعرض القراءات من A0 بواسطة السطر التالي

الجهد (Voltage) في A0 يتم تحويله إلى رقم مابين 0 و 1023.

المقاوم المتغير (Variable Resistors)

المقاومات المتغيرة تدعى “potentiometers” وتختصر بـ pot

في تجربتنا مع شاشة الاتصال التسلسلي (Serial Monitor) يقوم المقاوم بتغيير الجهد على A0 ، كما يقوم الكود البرمجي  بتحويل هذا الجهد إلى رقم مابين 0 و 1023.

pot slider

في المقاوم المتغير “pot” يوجد مسار يمثل المقاومة ، في هذه الحالة مقاومه مقدارها  10 kΩ . كما يوجد سن متوسط يعتبر الموصل الفاصل يسمى “Slider” وظيفته هي تغيير مقدار المقاومة مابين 0 وحتى 5V

تصميم الدائره على لوح التجارب

والآن دعنا نقوم بإستخدام المقاوم المتغير “pot” للتحكم في عدد الـLEDs

يعتمد تصميم هذه الدائرة على الدرس الخامس ، هناك بعض الاسلاك التي قمنا بتحريكها ، كما قمنا بإضاة المقاوم المتغير ‘pot’ وبعض السلاك له إلى الدائرة.

pot breadboard

الكود البرمجي للأردوينو

قم برفع الكود التالي إلى متحكم الأردوينو

 

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

اما بالنسبة للجزء الجديد من الكود وهو تعريف منفذ المدخل التناظري “Analog inputs” والتي سنقوم بربط المقاوم المتغير بها

 

لاحظ بأننا لم نقم بإضافة أي جديد في دالة ‘setup’ لتعريف حالة المنفذ للمدخل التناظري.

في دالة ‘loop’ نقوم بقراءة القيمة التناظرية “Analog value” بالطريقة التالية

ولكن علينا تحويل هذه القراءة التي مابين 0 و 1023 إلى عدد الـLEDs ليتم اضاءتها ، مابين 0 و 8 . الأرقام التي مابين 0 و 8 هي في الحقيقة مجموعها 9 قيم . لذا علينا توسيع نطاق القراءة عبر 1023 مقسومة على 9 أو 114

لإضاءة الأعداد الصحيحة للـLEDs ، نقوم بإستخدام for loop للعد من 0 وحتى “numLEDSLit” لوضع البت الصحيح.

وأخيراً نقوم بتحديث رقاقة مسجل الإزاحة ‘shift register’ عبر السطر التالي

امور اخرى عليك القيام بها

حاول استخدام مصباح LED واحد فقط بهذا المشروع وقم بالتحكم به.

اردوينو – الدرس الثامن – تغيير درجة الالوان لـ RGB LED

في هذا الدرس ستقوم بتطبيق ماتعلمته بالدرس السابع والرابع وذلك لاستخدام الازرار في تغيير درجة الالوان في RGB Led

1

القطع المطلوبة

لاتمام هذا الدرس عليك توفير القطع التالية

10mm Common Cathode RGB LED

10mm Common Cathode RGB LED

270 Ω Resistor

270 Ω Resistor

عدد 3

Tactile push switch

Tactile push switch

عدد 3

Half-size Breadboard

Half-size Breadboard

لوح تجارب حجم متوسط

Arduino Uno R3

Arduino Uno R3

Jumper wires

Jumper wires

تصميم لوح التجارب

 كما يظهر لك بالتصميم التالي فإن السن الأطول لـRBG LED (السن الثاني) تم وضعه في الصف الثاني من لوح التجارب ليتم توصيلة بـGND

نفترض ان لديك RBG LED ذات توصيل سالب ‘common cathode’ ، اذا كان لديك RBG LED ذات توصيل موجب ‘common anode’ قم بتوصيل السن الأطول بـ 5V عوضاُ عن GND
لاحظ عند استخدام التوصيل الموجب سيتم عكس دورة الألوان.

8

كود الأردوينو

قم برفع الكود التالي لمتحكم الأردوينو.

في البداية فإن جميع الـ LEDs ستكون مطفأه . اذا استمريت بالضغط على واحد من الأزرار فإنه سيبدأ في زيادة درجة سطوع الـLED تدريجياً. سيكون اللون أحمر للزر الأعلى ، أخضر للزر المتوسط ، وأزرق للزر الموجود أسفل لوح التجارب

عند اكتفاءك بدرجة سطوع احد الألوان ، قم بضغط زر آخر لرفع درجة سطوع اللون الاخر وشاهد كيف سيتم دمجها ببعض.

اذا اردت البدء مره اخرى كل ماعليك فعله هو الضغط على زر اعادة البدء ‘reset’ الموجود بمتحكم الأردوينو ( الزر الأحمر الموجود بالقرب من منفذ الـUSB)

مخطط الكود مشابة لمخطط الدرس الرابع ، لدينا 3 منافذ مخارج للتحكم بالـLED.
وهي منافذ تعديل عرض النبضة PWD (pulse width modulation) لنتمكن من وضع مقدار الطاقة التي نرغب وضعها لكل لون .

هنالك ثلاث منافذ اخرى نحتاجها ، واحدة لكل زر وسيتم تعريفها داخل دالة setup لتكون منافذ ادخال والتي ستعطي قيمة عالية (قيمة تساوي 1 ) عند عدم الضغط عليها، وعند الضغط عليها ستعطي قيمة منخفضة (قيمة تساوي 0)

بعد تعريف المنافذ ، نقوم بتعريف المتغيرات للالوان (احمر ، اخضر ، ازرق )

هذه المتغيرات سيتم استخدامها لتخزين القيم الحالية لكل لون ، مثال. لو كانت قيمة متغير اللن الأحمر هي صفر فيعني ذالك انها مطفأه ، واذا كانت قيمتها تساوي 255 فيعني ذالك انها مضاءه في اعلى درجات السطوع.

دالة loop تحتوي على جزئين ، الجزء الأول يقوم بالتحقق من قيم الأزرار والقيام بمايلزم . كل زر يعمل نفس الوظيفة ولكن  للون مختلف. هذا الجزء هو التالي

اذا  كانت قيمة red switch pin (كقراءة رقمية) هي قيمة منخفضة (اي تساوي صفر ) فهذا يعني أنه يتم الضغط على الزر حالياً ، فنقوم بإضافة 1 لمتغيرred الاحمر
الأمر red++ يعني اضافة 1 للمتغير

ولكن علينا أن نحرص هنا لأن القيمة الأعلى ستكون 255 عبر استخدام خاصية تعديل عرض النبضة PWD لذلك فالسطر التالي هو للتحقق من أننا لم نقم بتجاوز هذه القيمة، وإن قمنا بتجاوزه فإن القيمة ستعود وتبدأ من الصفر

الجزء الثاني من دالة loop تحمل قيم نظيرية ‘analogWrite’s’ لكل LED

أخيراً، سيكون هنالك تأخير طفيف delay  بنهاية  loop لإبطاء تحويل الألوان (يمكن تغيير قيمة التأخير)

امور اخرى عليك القيام بها

قم بازالة خاصية التأخير بنهاية loop ، يمكنك ذلك عبر جل السطر عبارة عن تعليق comment وذلك عن طريق وضع // ببداية السطر

بذلك لن يتم تنفيذ امر التأخير لانها اصبحت عبارة عن سطر تعليق ، واذا اردت ان تعيد الأمر ليتم تنفيذه يمكنك عبر ازالة // من بداية السطر

بدون خاصية التأخير delay ، سترى قيمة سطوع بشكل عشوائي كلما قمت برفع اصبعك من الزر.

امر آخر يمكنك القيام به ، هو التلاعب بوظائف الأزرار لتتمكن من اضاءة الـ LED كإشارة المرور.
حاول ذلك عبر جعل الزر الأول ظهر اللون الأحمر، الزر الأوسط يظهر اللون الأصفر ، الزر الأسفل يظهر اللون الأخضر.

اردوينو – الدرس السابع – (استخدام الأزرار) المدخلات الرقمية

في هذا الدرس ستتعلم كيفية استخدام ازرار “push buttons” مع المدخلات الرقمية”digital inputs” لإضاءة وإطفاء الـLED.

digital inputs

بالضغط على زر الموجود في أعلى لوح التجارب سيتم إضاءة الـLED ، وبالضغط على الزر الآخر سيتم إطفاءه.

القطع المطلوبة

لإتمام هذا الدرس يجب توفير القطع التالية

5mm Red LED

5mm Red LED

270 Ω Resistor

270 Ω Resistor

Tactile push switch

Tactile push switch

عدد 2

Half-size Breadboard

لوح تجارب حجم متوسط

Half-size Breadboard

Arduino Uno R3

Arduino Uno R3

Jumper wires

Jumper wires

تصميم لوح التجارب

ستجد أن نهايات الأزرار تسمح لك بتركيبها على لوح التجارب بسهولة

breadboard design

تذكر أنه يجب عليك تركيبها بحيث تكون الجهه السالبة (الأقصر) بإتجاه اليمين .

كود الأردوينو

قم برفع المخطط التالي إلى متحكم الأردوينو. وبعد اكتمال الرفع ستجد أنه عند الضغط على الزر الموجد في أعلى لوح التجارب سيتم إضاءة الـLED وعند الضغط على الزر الآخر سيتم إطفاءه.

 

 

الجزء الأول من المخطط يقوم بتعريف ثلاث متغيرات لثلاث منافذ سيتم استخدامها في الأردوينو.
‘ledPin’ هو منفذ المخرج و ‘buttonApin’ سيستخدم للزر الموجود في أعلى لوح التجارب و ‘buttonBpin’ سيستخدم للزر الآخر.

دالة ‘setup’ ستقوم بتعريف متغير ‘ledPin’ كمخرج ، ولكن سيكون أيضاً لدينا مدخلين اثنين (لأجل الأزرار) لذلك سنقوم بإستخدام دالة ‘pinMode’ لإضافة خاصية ‘INPUT_PULLUP’ لكل زر كالتالي

 

 

استخدامنا لـ INPUT_PULLUP يعني أن منفذ الإدخال للزر سيعطي قيمة 1 (قيمة عالية) اذا لم يتم الضغط عليه ، بمعنى آخر القيمه الاساسية لمنفذ الإدخال للزر هي 1 ، واذا تم الضغط على الزر فستعطي قيمة 0(قيمة منخفضة)

وهذا هو سبب ربط بـ GND . عند الضغط على الزر سيقوم الزر بتوصيل منفذ الإدخال إلى GND وعندها تكون القيمة منخفضة (0)

ولأننا قمنا بوضع التصميم بهذه الطريقة ، بمعنى ان قيمة الزر عالية ولكن عند الضغط عليه تكون منخفضة ،أي العكس لذلك سنقوم ببرمجتها داخل دالة ‘loop’

 

 

داخل دالة ‘loop’ هناك جملتين IF شرطية . جملة شرطية لكل زر تقوم بقراءة ‘digitalRead’ لمدخل الزر (لمعرفة الحالة اذا كانت عالية او منخفضة)

تذكر انه عند الضغط على الزر ستكون القيمة منخفضة لذلك سيتم تحقيق الشرط وسيتم اضاءة الـLED وذالك بإعطاء قيمة عالية (1) لـledPin
كذالك الحال للزر الأخر (بجملة IF الشرطية الثانية)ولكن سيتم اطفاء الـLED لأننا قمنا بإعطاء قيمة منخفضة(0) لـledPin

ازرار مفاتيح الضغط  Push Switches

تعتبر مكون بسيط يسهل استخدامه في المشاريع ، فعند الضغط عليه يقوم بتوصيل الدائرة .

الأزرار المستخدمه في هذا الدرس “مفاتيح اللمس – tactile switches” تمتلك أربعة موصلات

Push Switches inside

في الحقيقة هنالك موصلين اثنين كهربائية داخلها ( كما في الصورة) منفذ B ومنفذ c موصولة ببعضها كذلك الحال منفذ a ومنفذ D موصولة ببعض.

امور اخرى عليك القيام بها

هناك أمرين يمكنك القيام بها..

أولاً، يمكنك استخدام ماتعلمته من الدرس السادس واافة بعض الاوامر عليها لتتمكن من إظهار القيمة على شاشة الاتصال التسلسلي Serial Monitor عند الضغط على الأزرار.

تذكر بانه عليك استخدام امر الطباعة على الشاشة في الكود داخل دالة loop لإظهار القيمة بالشاشة

 

 

كما عليك القيام باضافة وتعريف خدمة الاتصال التسلسلي وذلك عبر اضافة الكود داخل دالة setup

 

 

ثانياً، حاول تغيير الكود بحيث تستطيع اضاءة الـLED عند الغضط على الزر الموجود باعلى لوح التجارب وإطفاءه بشكل تلقائي بعد ثلاثين ثانية.

اردوينو – الدرس السادس – شاشة الاتصال التسلسلي – Serial Monitor

في هذا الدرس سنتعلم كيفية التحكم بإضاءة الـ LEDs عبر شاشة الإتصال التسلسلي “serial monitor” وهو يعتبر حلقة الوصل بين جهاز الكمبيوتر والأردوينو حيث يمكنك من ارسال واستقبال الرسائل والتحكم بالأردوينو .

serial monitor

مثال ، يمكنك ارسال اوامر من جهاز الكمبيوتر لإضاءة الـLED .
في هذا الدرس سوف تستخدم نفس القطع المستخدمة في الدرس الخامس ، لذلك ننصحك بمتابعته اولاً قبل إكمال هذا الدرس.

شاشة الاتصال التسلسلي – Serial Monitor

قم برفع الكود التالي إلى الاردوينو ، وسنرى كيف سوف يعمل

 

 

بعد رفع المخطط على الأردوينو بنجاح قم بالضغط على الزر الموجود يمين الشاشة بشريط الأدوات ( كما في الصورة )

serial monitor

سوف تظهر لك هذه النافذة التالية

serial monitor

هذه النافذة تسمى “Serial Monitor” شاشة الاتصال التسلسلي وهو أحد خصائص برنامج الأردوينو. وظيفته هي السماح لك بإرسال وإستقبال الرسائل من جهاز الكمبيوتر إلى الأردوينو عبر كيبل USB.

الرسالة “Enter LED Number 0 to 9 or ‘x’ to clear” تم ارسالها عبر الأردوينو ، تطلب منا معرفة الأمر الذي سيتم تنفيذه . هل هو “X” (لإطفاء جميع الـ LEDs) أو ادخال رقم الـLED الذي ترغب بإضاءته (من 0 إلى 7 )

جرب ادخال الأمر التالي:
Enter    X
Enter    3
Enter    5

عملية ادخال X لن تؤثر لأن جميع الـ LEDs مطفأه ، ولكن عند ادخال رقم الـLED المراد إضاءته سيقوم الأردوينو بالرد عليك برسالة تؤكد تشغيله كما نشاهد بالصورة التالية.

serial monitor

يمكنك تجربة الأمر X لتشاهد عملية الإطفاء لها جميعاً.

كود الأردوينو

كما ستلاحظ سوف نعتمد على كود الدرس السابق وسوف نقوم فقط بتغطية الاجزاء الجديدة بالكود ( عليك مراجعة كود الدرس السابق كاملاً حتى يسهل عليك متابعة الجزء الجديد)

أولاً ، دالة “setup” هنالك ثلاثة أسطر جديدة في نهايته

   

 

 

أولاً لدينا الأمر “Serial.begin(9600)” وهو يقوم ببدء عملية الإتصال التسلسلي ليمكن الأردوينو من إرسال الأوامر عبر كيبل الـUSB. القيمة 9600 هو معدل سرعة نقل البيانات،يمكنك تغيير القيمة لقيمة أعلى ولكن يجب عليك تغيير قيمة شاشة الاتصال التسلسلي لنفس القيمة.

السطر الثاني يبدأ بـ”While” الشرطية للتأكد من ان هنالك اتصال عبر الـUSB للأردوينو قبل بدء ارسال الرسائل .

السطر الثالث لطباعة السؤال بالشاشة.

دالة “loop”

   

 

 

كل شي يحدث داخل دورة الـ loop يحدث داخل الجملة الشرطية IF (اذا كان)،
“Serial.available()” للتأكد من انه مازال هناك اتصال تسلسلي نشط (وذلك عبر استرجاع قيمة True – نعم) وعندها فقط يتم تنفيذ سلسلة الأوامر التي بداخلها.
اذا تم استقبال رسالة فسوف ينتقل لسطر الكود التالي

 

 

هذا الأمر سيقوم بقراءة الحرف الذي تم استلامه ويقوم بتخزينه للمتغير ch ،المتغير ch تم تعريفه  لتخزين القيم التي هي عبارة عن حروف  char وهي اختصار لـcharacter “حرف ” يتم تخزن حرف واحد فقط كقيمة للمتغير

السطر الذي يليله بالكود هي جملة IF الشرطية ، وذلك للتأكد من أن القيمة المدخلة أعلى من 0 وأقل من 7. قد تبدو غريبة عليك الآن ولكن اعدك عبر الممارسة ستقوم بفهمها جيداً.

كل حرف مدخل يحمل قيمة خاصة بالنظام ، يدعى قيمة ASCII .وهذا يعني انه عند استخدام <= و => فنحن نقوم بالمقارنة بقيم ASCII

اذا نجح الاختبار فسوف ينتقل للسطر الذي يليه

 

 

يقوم باحتساب قيمة الـ LED = وذلك عبر عملية طرح الصفر من  قيمة (ASCII) للحرف المدخل

لأننا نعلم برقم الـLED الذي نرغب بإضاءته كل ماعلينا فعله هو وضع تلك القيمة لـleads والقيام بتحديث مسجل الإزاحة shift register

  

 

 

السطرين التاليين سيقومون بإرسال رسالة التأكيد لشاشة الاتصال التسلسلي serial monitor

 

 

كما تلاحظ لقد قمنا بإستخدام Serial.print عوضاً عن Serial.println.الفرق بين الإثنين هو أن Serial.print لايقوم بوضع سطر جديد في الشاشة بعد طباعة الرسالة.
ولأننا نود أن نطبع في الشاشة رسالة التأكيد اضافة إلى رقم الـLED الذي تم اضاءته فيجب علينا ان نستمر بالطباعة على الشاشة في نفس السطر لذلك السطر الذي يليه قمنا بإستخدام Serial.println لأننا نرغب بوضع سطر جديد بعد طباعة الرسالة ورقم الـLED

قيمة الـLED هو عبارة عن integer رقم صحيح “int”
بعد جملة IF الشرطية الأولى هنالك جملة IF شرطية ثانية تقوم بالتأكد ما اذا كان قيمة “ch” يحمل الحرف x او لأ.

 

 

امور اخرى عليك القيام بها

قمنا بإرسال الحروف منفصله وذلك عبر الضغط على إنتر Enter بعد كل حرف لارسال الأمر ، ولكن يمكنك ارسالها جميعاً مره واحدة في سطر واحد .. جرب ادخال التالي في شاشة الاتصال التسلسلي وارسلها:
X0246

لنرى الآن لأي مدى سرعة اتصال الأردوينو . قم بتغيير معدل سرعة نقل البيانات في الكود من 9600 إلى 115200 وقم برفعه لمتحكم الأردوينو مره أخرى.
بعد ذلك قم بفتح شاشة الاتصال التسلسلي وقم بتغيير معدل سرعة نقل البيانات إلى 115200 (مثل الصورة)

5

ستلاحظ أنه لايزال كل شي يعمل بشكل صحيح ، معدل سرعات نقل البيانات العالية جداً غير ضرورية لذلك 9600 هي الشائع استخداما والعديد من وحدات الـGPS تستخدم هذه السرعة.

كما يمكنك عدم توحيد معدل نقل البيانات بين شاشة الاتصال التسلسلي و كود الأردوينو ، لتشاهد ماذا يحدث ولتعرف كيف يظهر الخطأ وماسببه.

شاشة الاتصال التسلسلي “Serial Monitor” هي طريقة جيدة أيضاً لتحليل أخطاء الكود وتصحيحها أيضاً

اردوينو – الدرس الخامس – إضاءة 8LEDs بإستخدام رقاقة Shift Register

في هذا الدرس ستتعلم طريقة تشغيل  8LEDs  حمراء كبيرة بدون إستعمال 8 منافذ مخارج

arduino with Shift register

رغم أنه يمكنك ربط كل LED بمنفذ منفرد بالأردوينو ولكن في هذه الحالة لن يبقى لديك الكثير من المنافذ لاستعمالات أخرى. قد يكون الأمر ممكن في حالة عدم وجود الكثير من الأجهزة مرتبطة بالاردوينو، ولكننا في أغلب الأحيان نود إضافة أزرار، محركات ومستشعرات  إلخ…  الحل هو إستعمال رقاقة  74HC595  ، تمتلك هذه الرقاقة 8 منافذ إستخراج و3 منافذ إدخال

ستقوم هذه الرقاقة في إبطاء سرعة الـ LEDs
( من 8000000 إلى 500000 تحويله في الثانية  ولكنها تبقى سريعة جدا ولن نلاحظ الفرق)

القطع المطلوبة

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

5mm Red LED5mm Red LED عدد 8

270 Ω Resistors270 Ω Resistors عدد 8

74HC595 Shift Registerرقاقة مسجل الإزاحة
74HC595 Shift Register

Half-size Breadboardلوح تجارب حجم متوسط
Half-size Breadboard

Arduino Uno R3Arduino Uno R3

Jumper wire pack

Jumper wire pack

تصميم لوح التجارب

بما ان لدينا 8LEDs لتربط مع 8 مقومات يجب وضع العديد من الأسلاك.

8

من الأسهل ان نبدأ بوضع رقاقة مسجل الإزاحة  74HC595 في لوح التجارب ،كل شيء مربوط به ، قم بوضع الرقاقة حيث يكون السن الذي يشبه شكل U متجه إلى أعلى لوح التجارب.  المنفذ رقم 1 للرقاقة على اليسار

  • تربط منفذ الديجيتال 4 من الأردوينو بالمنفذ 14 من مسجل الإزاحة.
  • تربط منفذ الديجيتال 5 من الأردوينو بالمنفذ 12 من مسجل الإزاحة.
  • تربط منفذ الديجيتال 6 من الأردوينو بالمنفذ 11 من مسجل الإزاحة.

أغلب منافذ الإستخراج من الرقاقة توجد على اليسار، حتى يسهل ربط الـ LEDs.

بعد وضع رقاقة مسجل الإزاحة  نقوم بإضافة المقاومات ، يجب ان تتأكد ان ليس هنالك التماس بين مختلف نهايات المقاومات يجب أن تتأكد مجددا قبل أن تغذي الاردوينو بالطاقة ، قد يساعدك التقصير في طول نهاية المقاومات.نقوم بوضع الـ LED في لوح التجارب

يجب على المنافذ الطويلة للـ LED أن تواجه الرقاقة مباشرة.

المرحلة الأخيرة هي إضافة الأسلاك كما في الصورة.  لا تنسى أن تربط المنفذ 8 من الرقاقة إلى خانة الأرض أو GND

قم بتحمل المخطط وتجربته.  على كل LED أن يعمل مرة واحدة ثم الكل معا وأخيراً ينطفئ الكل معا قبل أن يعيد الاردوينو الدورة.

74HC595 Shift Register

من الافضل فهم طريقة عمل رقاقة مسجل الإزاحة حتى نفهم الكود جيدا.

الرقاقة هي عبارة عن مسجل للإزاحة

تحمل 8 أماكن تعتبر مثل الذاكرة الصغيرة ، يمكن لكل واحدة فيها أن تسجل 1 أو 0 كقيمة

لنسجل كل من هذه الخانات بالقيمة المراد وضعها ، ندخل كل من المعلومات عبر منفذ “Data” ومنفذ “Clock”

على منفذ الـ”Clock”  أن يستقبل 8 ذبذبات، إذا كان منفذ “Data” عالي فسيتم إدخال القيمة “1” إلى داخل مسجل الإزاحة. بعد إستقبال الذبذبات الثمانية تعطى الإشارة لمنفذ “Latch” لتخرج الإشارة لجميع الـ LEDs الثمانية دفعة واحدة.

تمتلك الرقاقة منفذ “OE” (إختصار لـ output enable ) وهي التي تتحكم في كل المخرجات معا.  يمكن لك التحكم في البريق الكلي للـLED إذا قمت بربط منفذ “OE” بمنفذ إستخراج “MWP” من الاردوينو وقمت بإستخدام الدلة ” analogWrite” بالكود فسوف يعمل الـ LEDعلى مستوى منخفض، لذلك سنربطها بالأرض.

كود الاردوينو

تمتلك مكتبة الاردوينو “دالة” مميزة تسمى “ShiftOut” وهي مصممة خصيصا لإرسال البيانات لرقاقة مسجل الإزاحة.

التالي هو المخطط الكامل، سنتحدث عن طريقة عمل هذا المخطط  في ما بعد.
إنسخ الكود

 

 

أول ما علينا فعله هو التعريف بالمنافذ الثلاث التي سنستعملها. هذه هي منافذ الاردوينو التي سنستعملها للتحكم في “Latch”، “Clock” ومنفذ “Data” من الرقاقة 74HC595.

 

 

ثم يأتي التعريف بالمتغيرالمسمى Leds سنستعمل هذا المتغير لإحتواء نمط تغيير(تشغيل أو اطفاء) الـ LED.
تمثل البيانات من نوع ” – Byteبايت” أرقام تكتب بإستعمال 8 أجزاء.  يمكن أن يحمل كل جزء قيمة 1 أو 0
وهذا سيمكننا من تتبع قيمة كل LED.

 

 

تقوم دالة التنصيب  “Setup” هذه بإعداد المنافذ الثلاث التي سنستخدمها كمخرجات للـ LEDs.

 

 

تقوم دالة “Loop” بإطفاء كل LED وذلك بإعطاء قيمة ‘0’ كقيمة للـ LEDs. ثم تقوم بمناداة دالة “updateShiftRegister” التي سترسل نمط Leds إلى رقاقة مسجل الإزاحة حتى تنطفئ كل LED. سوف نتعلم كيفية عمل “updateShiftRegister” لاحقا.

تقف دالة “Loop” لنصف ثانية ثم تبدء بالعد من 0 إلى 7 عبر دورة “For” والمتغير “I”.  وفي كل مرة تستعمل وظيفة “bitSet” لتثبيت الجزء المتحكم في الـLED داخل متغير Leds . ثم تنادي دالة  “updateShiftRegister” حتى يتم تحديث حالة الـLED التي تعكس قيمة المتغير”leds”

هنالك فترة إنتظار نصف ثانية في كل تكرار للدورة “For”

 

 

تقوم دالة UpdateShiftRegister بوضع منفذ “Latch” إلى الوضع المنخفض ثم تنادي دالة shiftOut قبل ان تعيد منفذ “Latch” إلى الوضع العالي مره أخرى ، تأخد هذه الدالة أربع متغيرات، تحدد المتغيرتان الأولى المنافذ المستعملة لنقل البيانات عبر “Data” و”Clock” .

تحدد المتغيرة الثالثة جهة البدء بقراءة البايت. سوف نقرأ البايت من اليمين إلى اليسار.

المتغير الأخيريمثل القيمة الفعلية التي سترسل إلى رقاقة مسجل الإزاحة.

 

 

إذا كنت تود تغيير قيم أحد الـ LEDs، كل ماعليك هو أن تنادي دالة مشابهة اسمها (bitClear) لتغير قيمتها إلى 0
هكذا ستطفئ واحدة من الـLEDs وكل مايتبقى لك فعله هو مناداة دالة “updateShiftRegister” لتحديث حالة الـLED.

التحكم في البريق

لم نتحدث كثيراً في رقاقة الـ 74HC595 عن منفذ “OE” أو “OutputEnable” ، رقم هذا الـ LED هو 13, وفي لوح التجارب مربوط دوما بالأرض.  يعمل هذه المنفذ كالمحول، هو الذي  يمكن له ان يطفئ ويشغل المخرجات(الـLEDs (
ولكن عليك أن تحذر لأنها تعمل في الوضع المنخفض. ذلك يعني، إن كانت كلها مربوطة بطاقة5V ستطفئ جميعها. وإن كانت مربوطة بالأرض ستعمل جميعها حسب ما يأتيها من بيانات.

يمكن لنا أن نستعمل هذه المنفذ والإستعانة بدالة “analogWrite” للتحكم في بريق إضاءة الـ LED معا.

كل ما عليك فعله هو تغيير المنفذ 13 من الأرض إلى المنفذ 3 في الأردوينو.

سيجعل المخطط التالي كل الـLEDs تعمل ببطء ثم تنطفئ ببطء.

 

 

أنشطة أخرى

عندما تتمكن من فهم رقاقة مسجل الإزاحة ستجد العديد من التطبيقات التي يمكن لك فعلها بإستعمال عدد كبير من الـLEDs.

واحدةمن الأشياء الرائعة في رقاقة 74HC595 أنه يمكن وضعها بجانب بعضها والتحكم في عدد أكبر من الـLEDs بإستعمال نفس منافذ المخارج من الأردوينو.

لا تقوم بتغيير الدائرة في لوح التجارب، سوف نستعملها في الدرس القادم.

اردوينو – الدرس الرابع – إضاءة RGB LEDs

مقدمة

في هذا الدرس سنتعلم كيفية إستعمال الـLED الملون أو RGB (Led Green Blue)
سوف تستعمل analogWrite من مكتبة الاردوينو للتحكم في لون الـLED.

1

تبدو الـLED الملون مثل الـLED العادي ولكن يوجد داخل الـLED الملون 3 LEDS ، أحمر  LED أخضر LED وأزرق LED  يمكن لنا التحصل على الوان عن طريق التحكم في بريق كل واحدة من هذه الإضاءات.

تمزج الألوان الضوئية كما الألوان التي تستعمل للرسم، وذلك بتعديل كمية أو قيمة كل لون.
الطريقة الصعبة للقيام بهذا تكون بإستعمال عدة مقاومات كما قمنا في الدرس السابق ولكن هذا صعب. لحسن الحظ ، يمتلك الاردوينو دالة اسمها  analogWrite لإستخراج قيمة متغيرة من التيار الكهربائي لتغذية الـLED

القطع المطلوبة

لتنفيذ هذه التجربة يجب عليك توفير القطع التالية.

2

Diffuse RGB LED 10mm

220 Ω resistor

220 Ω Resistors ثلاث قطع

4

Half-size Breadboard

5

Arduino Uno R3

6

Jumper wire pack

تصميم لوحة التجارب

لدى الـLED الملون أربع نهايات ،هنالك منفذ لكل قطب سالب لـ3  LEDSوقطب واحد موحد للأقطاب الموجبة.

 t12

القطب الموجب الموحد هو القطب الثاني من الجهة المسطحة وهو كذلك الأطول بين الأقطاب الأربعة ستربطه بمقاومة بقيمة 220 اوم حتى تمنع مرور تيار كهربائي كبير ويربط قطب المقاومة من الجهة الأخرى بالاردوينو 5v.

يتم ربط كل من أقطاب الـ LEDs الملونة بالاردوينو كما هو موضح بالصورة.

إذا كنت تستعمل RGB LED بقطب سالب موحد عوض عن قطب الموجب الموحد اربط القطب الطويل بـ GND عوضاً عن 5v.

matlab-gui

الألوان

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

بلغة أخرى، استعمالنا لثلاث اضاءات هو طريقة لخدع العين.  نفس الفكرة مستعمل في أجهزة التلفاز، حيث كل بيكسل متكون من ثلاث نقاط (أحمر، أخضر،أزرق).

9

إذا وضعنا القيمة القصوى لكل LED فسنحصل على اللون الأبيض ، وإذا اغلقنا LED الأزرق فسنحصل على اللون الأصفر الذي هو مزيج بين الأحمر والأخضر.

يمكن لنا أن نتحصل على كل ألون الطيف عن طريق التحكم في بريق كل لون من اللادات

الأسود ليس بلون انما هو نتيجة غياب الضوء. إذاً الطريقة الأقرب لنا للوصول إلى اللون الأسود هي بإطفاء جميع اللادات.

مخطوطة الاردوينو

هذه المخطوطة ستدور حول الألوان : الأحمر، الأخضر، الأزرق، الأصفر، البنفسجي والبحري تندرج هذه الألوان ضمن معيار الألوان في الإنترنت
إنسخ الكود
جرب المخطوطة، سوف نشرح ببعض التفاصيل

 

 

تبدأ المخطوطة بتحديد منفذ كل لون
إنسخ الكود

 

الخطوة الثانية، هي كتابة دالة التعريف SETUP كما شهدنا في الدروس السابق أن وظيفة التعريق تعمل مره واحدة في بداية التشغيل.  في هذه المخطوطة كل ما علينا فعله هو إعداد المنافذ الثلاث للإستخراج
إنسخ الكود

 

 

قبل أن ننظر إلى دالة “LOOP” ، لنلقي نظرة على آخر دالة  في المخطوطة.
إنسخ الكود

لأننا نستعمل الـLED الملونه ذات قطب موجب موحد، عليك إذاً أن تغير قيمة العوامل المتغيرة لكل لون وذلك بطرح القيمة المرادة من 255

 

 

في هذه الدالة تم اخذ ثلاث عوامل متغيرة، واحدة لكل بريق لون ، سيكون العامل المتغير من 0 وحتى 250
حيث يعني 0 القيمى الصغرى  و 255 هي القيمة القصوى
تستدعى الدالة analogWrite للتحكم في بريق كل LED
إذا نظرت في دالة  loop فستلاحظ اننا نغير في قيمة الألوان التي نريد عرضها ثم ننتظر ثانية قبل أن نذهب إلى اللون التالي.
إنسخ الكود

 

 

قم بإضافة بعض الألوان إلى المخطوطة الخاص بك وشاهد تأثيرها في الـLED الملونه.

إذا كنت تستعمل الـLED الملونه ذات قطب سالب موحد، لا تقم بطرح القيمة المرادة من 255

إستعمال ألوان الإنترنت

إذا كنت قد قمت ببعض البرمجةمن قبل  فستعلم أن الألوان ترمز إليها بأرقام HEX على القاعدة 16.  مثلا يرمز للون الأحمر بـ  FF0000# يمكن أن تجد أرقام العديد من الألوان في مصادر عديدة، مثل

http://www.devguru.com/features/colors

الأرقام 6 التي ترمز للون متكونة من ثلاث أزواج، الرقمان الأولان يرمزان للأحمر، الرقمان التاليان للأخضر والأخيران للأزرق الأحمر هو FF0000#  لأن فيه القيمة القصوى للأحمر وليس فيه أي ألوان أخرى

بهذه الطريقة يمكن لنا ان نستخرج أي لون بسرعة.

لنصنع هذا اللون مثلاً  (#4B0082)

قيمة الأحمر الأخضر والأزرق هم كالآتى.
يمكن لنا أن نضع هذه القيم  في دالة “SetColor” هكذا :
إنسخ الكود

 

 

قمنا بإضافة 0X أمام الأرقام لأنها أرقام HEX

قم بإضافة بعض الألوان إلى دالة “Loop”  لا تنسى أن تضيف “Delay” بعد كل واحدة

MWP نظرياً

MWP هي تقنية للتحكم في الطاقة نحن نستعملها هنا للتحكم في كمية الطاقة لكل LED.

يعرض الرسم البياني التالي إشارة MWP على منفذ  الأردوينو

10

تقريبا كل 1/500  ذبذبة بالثانية، نتحكم في طول هذه الذبذبة بإستعمال دالة  “analogWrite  إذا كانتanalogWrite(0)  لا تعطينا أي ذبذبة و analogWrite(255) تعطينا ذبذبة متواصلة.

إذا حددنا قيمة بين 0 و 255 فسنحصل على ذبذبة ،إذا كانت الإشارة عالية مقدار 5% فقط فذلك يعني اننا نستعمل في 5% من الطاقة.

نفس الشيء إذا كان منفذ الإستخراج يساوي 5V  في 90% من الوقت فسنحصل على 90% من الطاقة.
لا يمكننا ملاحظة تغير(إطفاء وتشغيل) إشعاع الإضاءة بهذه السرعة فيخيل لنا أن بريقها يتغيرفقط.

أنشطة أخرى

  • حاول وضع كرة PING-PONG فوق الـ LEDالملونة
  • غير مدة الإنتظار عبر دالة  “Delay” لتسرع أوتبطئ سرعة تغير الألوان.

هنالك العديد من الأنشطة التي يمكنلك فعله ابإستعمال الـLED الملونة قم بتصفح الإنترنت لتستكشف كل المؤثرات الخاصة القائمة على الـLED الملونة

اردوينو – الدرس الثالث – إضاءات LEDs

مقدمة

سنتعلم في هذا الدرس كيفية تغيير درجة بريق الـLED  بإستعمال عدة قيم من المقاومات.

arduino with breadboard and leds

القطع المطلوبة

لتنفيذ هذه التجربة يجب عليك توفير القطع التالية.

5mm Red LED

5mm Red LED

270 Ω Resistor

270 Ω Resistor

470 Ω Resistor

470 Ω Resistor

2.2 kΩ Resistor

2.2 kΩ Resistor

10 kΩ Resistor

10 kΩ Resistor

Half-size Breadboard

لوحة التجارب الصغيره   Half-size Breadboard

Arduino Uno R3

Arduino Uno R3

Jumper wire pack

Jumper wire pack

الـ LED

تعتبر الـLED مؤشر ضوئي فعال فهي تستعمل كميات ضئيلة من الكهرباء ويمكنها العيش لفترة طويلة جدا

سنستعمل في هذا الدرس أكثر  LEDشعبية هوmm red LED5 . ترمز mm5 إلى قطر الـLED.

لا يمكنك ربط الـLED مباشرة إلى بطارية أو أي مصدر طاقة.
السبب الأول هو أنها تمتلك قطب سالب وقطب موجب وقد لا تعمل إذا كانت مربوطة بالخطأ.
السبب الثاني هو انه يجب إضافة مقاومة  resistorبين مصدر الطاقة و الـLED حتى تحد من قيمة التيار الكهربائي المار عبر الـLED والذي يمكن له أن يحرقها.

5mm red led

إذا لم تستعمل مقاومة resistor  مع الـLED فيمكن أن يؤدي ذلك إلى إحتراق الـLED مباشرة. لأن قيمة كبيرة من الكهرباء ستمر عبر الـLED والتي ستنتج  عنها حرارة عالية لا يمكن تحملها.

هنالك طريقتين لمعرفة أي من القطبين موجب وأيهما سالب.
أولا: القطب الموجب هو القطب الأطول.
ثانيا: من حيث يدخل القطب السالب للـLED ستجد حافة مسطحة الجسم.

المقاومات Resistors

كما يظهر من الاسم، المقاومة تقاوم تدفق التيار الكهربائي، وكلما ارتفعت قيمة المقاومة كلما قاومت أكثر وقل تدفق التيار الكهربائي.  سنستعمل المقاومة إذاً للتحكم في كمية التيار الكهربائي المتدفقة في الـLED كذلك في درجة بريق الـLED.

resistor

ولكن لنتحدث قليلاً عن المقاومة.

وحدة قياس المقاومة هي الأوهم، ويرمز لها الحرف اليوناني Ω
كما نستعمل قيمة مقاومة في حدود الـ  1000 kΩ  =   Ω (كيلو أوهم)
و 1000,000 MΩ =  Ω (ميجا أوهم)

في هذا الدرس سنستعمل 3 قيم مختلفة للمقاومة، 270Ω، 470Ω، 2.2kΩ و 10kΩ.

كل هذه المقوامات تبدو متماثلة ماعدا في ألوان الشرائط التي تحملها.والتي تساعدنا في تمييز قيمة كل مقاومة.

يمكن لنا أن نستخرج قيمة المقاومة من خلال الألوان.

كل لون لديه رقم يرمز كالتالي:

  • الأسود 0
  • البني 1
  • الأحمر 2
  • البرتقالي 3
  • الأصفر 4
  • الأخضر 5
  • الأزرق 6
  • البنفسجي 7
  • الرمادي 8
  • الأبيض 9

الشريط الأول والثاني يمثلان الرقمان الأولان لقيمة المقاومة ، إذا كانت أحمر ثم بنفسجي يعني 7 و 2 ، يمثل الشريط الثالث عدد الأصفار التي تأتي بعد الرقمين الأول و الثاني، فإذا كان اللون بني فذلك يعني أنه علينا إضافة صفر وحيد وتصبح قيمة المقاومة إذن 270 أوهم.

تمتلك مقاومة بشرائط بني، أسود، برتقالي، مقاومة بقيمة 10 kΩ

على عكس الـLED تمتلك المقاومة قطبين، يمكن لها إن توصل من الجهتين.

تصميم لوحة التجارب

قم بوصل دائرتك مثل الصورة التالية

circuit1

يمكن للأردوينو أن يمدنا بطاقة مقدارها 5Volts التي ستوفر الطاقة الكافية لـLED  والمقاومة.
عليك الأن ربط الاردوينو بالحاسوب عبر كيبل USB

arduino uno with breadboard and led

مع وجود المقاومة بقيمة 270 أوهم ستضيء الـLED بقوة.
إذا قمت بتغيير المقاومة بمقاومة 470 أوهم سينخفض بريق الـLED

مع وجود مقاومة 2.2 K أوهم سينخفض بريق الـLED أكثر
وأخيرا مع مقاومة بقيمة 10K أوهم ستكون الـLED بالكاد مضاءة.
قم بنزع السلك الأحمر من لوحة التجارب وأعده حتى يعمل كمحول.  سيسهل عليك ملاحظة الفرق.

أطفئ الأضواء لمشاهدة أفضل.

تغيير مكان المقاومة

لديك الأن، 5V من الاردوينو إلى منفذ المقاومة الأولى، المنفذ الثاني للمقاومة مربوط بالقطب الموجب للـLED والقطب السالب موصل ب GND ولكن إن غيرنا مكان المقاومة بعد الـLED ، فلن يغير ذلك من بريق الـLED.

circuit1 view 2

قد تريد إعادة المقاومة بقيمة 270 أوهم إلى مكانها.

إذن..لا يهم مكان وجود المقاومة. المهم هوان تكون موصوله  مع الـLED.

وميض الـLED

بتغيير طفيف للدائرة ، سنوصل الـLED بمنفذ إستخراج من الاردوينو قم بتحريك السلك الأحمر من منفذ 5V إلى D13، مثل الصورة التالية

circuit1 view3

والإن قم بتحميل برنامج مخطط “Blink” من الدرس الأول ستلاحظ أن كل الـLED الملحق بالأردوينو و الـLED في لوحة التجارب يومضان.

لنستعمل المنفذ D7 حرك السلك الأحمر من D13 إلى D7 وغير هذا المقطع في بداية الكود

إلى:

قم بلف و تحميل الكود، ستواصل الـLED الوميض ولكن المرة هذه من خلال المنفذ D7

في الدرس القادم ستستعمل الـLED مره أخرى، ولكن سيتحكم فيها الاردوينو

اردوينو – الدرس الثاني – الوميض

مقدمة

في هذا الدرس ستتعلم برمجة الاردوينو لتجعل الـ LED الملحقة بها يومض.

arduino plus IDE

القطع المطلوبة

 

Arduino Uno R3

Arduino Uno R3

Cabel Type A to B USB

كيبل Type A to B USB –

الـ LED

 

يتمتع الاردوينو بموصلات في كلتا الجهتين والتي تساعده على الإرتباط مع أجهزة إلكترونية أخرى أو مع مختلف الدروع المتاحة التي تساعد في توسيع إمكانياته.

يمتلك الاردوينو مع ذلك LED ملحقة به والتي يمكن لك أن تتحكم بها عن طريق البرمجة مباشرة. هذه الـLED ملحقة بأردوينو ويرمز لها عادة بالـLED ‘L’

توجد هذه الـLED داخل محيط الدائرة الحمراء في الصورة التالية.

arduino uno led

arduino leonardo led

تحميل مثال الوميض أو Blink

 

قد تلاحظ أن الـLED  في الاردوينو تومض بدون تحميل أي برنامج . ذلك لأن كل لوحات الاردوينو تشحن مع برنامج الوميض.

في هذا الدرس سنعيد برمجة الاردوينو بإستعمال برنامجنا الخاص ثم سنغير معدل وميض الـ LED.

في الدرس السابق  قمت بتثبيت برنامج الاردوينو وتأكدت من توصله مع لوحتك عبر منفذ التواصل المتسلسل.  يمكن لك أن تتثبت من صحة تنصيبك لبرنامج الاردوينو من خلال برمجتك للوحة الاردوينو.

يمتلك برنامج الاردوينو العديد من المخططات “برامج جاهزة” التي يمكن لك أن تحملها تستعملها بسرعة. و ذلك يشمل مثال الوميض لـ LED  ‘L’ .

قم بتحميل مخطط Blink من خلال  File->Examples->01.Basics

browse to blink example

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

blink sketch

تسجيل نسخة من برنامج “الوميض”

 

كل الأمثلة الملحقة ببرنامج الاردوينو “للقراءة فقط”  ذلك يعني أنه يمكن لك أن تحملها للوحتك ولكن لا يمكنك تغييرها.

بما اننا سنغير في المخططات علينا إذاً أن نقوم بتسجيل نسختنا الخاصة.

من خلال قائمة “File” من برنامج الاردوينو قم بإختيار “save as” ثم إحفظة بإسم مناسب مثل “My Blink”

save sketch

لقد قمت بتسجيل نسختك.  ذلك يعني انه يمكنك العثور على برنامجك من خلال قائمة File->Sketchbook

browse to sketchbook

تحميل مثال الوميض للوحة

 

أربط لوحتك بالكمبيوتر عبر كيبل USB ثم تأكد من صحة “Board Type” و “Serial Port”.  قد تحتاج إلى العودة للدرس السابق.
يعرض برنامج الاردوينو الاعدادت الجارية للوحة في أسفل النافذة.

أنقر على زر Upload   الزر الثاني من اليسار في لوحة الأدوات

upload button

إذا شاهدت لوحة الحالة فستلاحظ لوحة تقدم والعديد من الرسائل  في الأول سيكتب لك Compiling Sketch ….  هذا يعني أن المخطط في خضم التحويل إلى نسخة  قابلة للتنفيذ في الاردوينو.

compiling sketch

بعد ذلك ستتغير الحالة إلى “Uploading” أو تحميل  في هذه المرحلة على الـLED الملحقه في الاردوينو أن تبدأ في الوميض

uploading sketch

أخيرا ستتحول الحاله إلى “Done” أي “انتهى”

done uploading

تخبرنا الرسالة أن هذا البرنامج يستعمل 1,084 بيتس من ال-32,256 المتوفرة.
يمكن أن تواجهك الرسالة التالية

arduino serial connection error

ذلك يعني أن لوحتك ليست مربوطة أو نظام التشغيل ليس مثبت أو أن منفذ التواصل المتسلسل خاطئ

إذا واجهتك هذه الرسالة، عد إلى الدرس السابق وتثبت من صحة تنصيبك للبرنامج.

عندما ينتهي التحميل، على لوحتك إعادة العمل والبدء في الوميض.

كيف يعمل الوميض؟

 

التالي هو برنامج مخطط الوميض


 ستلاحظ سريعا أن أغلب هذا الكود تعليقات.  لا تؤثر التعليقات في سير البرنامج. فهي موجودة لتوفير شرح  لطريقة سير البرنامج بلغة أسهل.

كل شيء بين /*   و   */    في بداية المخطط هي مجموعة من التعليقات التي تشرح مضمون الكود.

هنالك أيضاً تعليقات عبارة عن سطر واحد فقط ،  تبدء بـ //

السطر الأول من الكود هو:

 

 

كما ذكر في  التعليق ، هذا يعطي إسم لمنفذ الاردوينو المربوط بالـ LED غالباً ما يكون هذا المنفذ رقم 13 وهو موجود في الأردوينو UNO والاردوينو Leonardo

يليها  الدالة Setup  تعمل هذه الدالة عند الضغط على زر Reset كذلك تعمل عند تسغيل أو إعادة تشغيل اللوحة

 

يتكون كل برنامج اردوينو من دالة Setup والتي تحتوي على سلسلة من التعليمات داخل{}

في هذه الحالة هنالك تعليمة واحدة، وهي كما تم شرحها  في التعليق، تقوم الاردوينو بتخصيص المنفذ رقم 13 لعملية منفذات ( إضاءة  LED).

يجب أن يتكون كل برنامج “مخطط” اردوينو من دالة  “Loop” والتي تعمل مباشرة بعد دالة “Setup”
تقوم دالة “Loop” بتنفيذ وتكرار سلسلة التعليمات الموجودة بداخلها طالما أن جهاز الاردوينو يعمل

 

الوميض بطريقة أسرع

 

سوف نجعل الآن الـLED تومض بطريقة أسرع وكما استنتجت،كل ما علينا فعله هو التخفيض في قيمة الإنتظار”delay”

increase blink speed

وحدة قيمة الإنتظار هي ملي ثانية ، فإذا أردت أن تومض الـLED بضعف السرعة الحالية، كل ما عليك فعله هو تغيير 1000 إلى 500  هكذا فإن مدة الإنتظار ستجبر البرنامج على الوقوف لمدة نصف ثانية عوض عن ثانية كاملة.

حمل برنامج المخطط مرة أخرى وستلاحظ أن الـ LEDتومض بسرعة.

أنشطة أخرى

 

قم بتغيير قيمة الإنتظار إلى 100 ملي ثانية لتجعل الوميض أسرع بكثير.

اردوينو – الدرس الأول – تنصيب الأردوينو على جهازك

في هذا الدرس ستتعلم كيفية تنصيب اردوينو وكيفية استعماله للدروس القادمة.

arduino uno r3

يوجد برنامج اردوينو الذي يستعمل لبرمجة جهاز الاردوينو على الويندوز الماك و اللينكس.
تختلف طريقة التنصيب في المنصات الثلاث مع وجود بعض العمل اليدوي لتنصيبه.  ليس هنالك برنامج تنصيب, عليك فك مجلد يحتوي على مجلد اردوينو الذي يحتوي على برنامج اردوينو وبعض العناصر الأخرى.
في المرحلة الثانية عليك تنصيب نظام تشغيل USB وهي مرحلة حساسة بعض الشيء.
أبدأ بزيارة موقعarduino.cc .قم بتحميل المجلد المضغوط لوندوز (أحدث نسخة).
Arduino.cc

بعد تحميل الملف المضغوط قم بفتح محتواه على سطح المكتب. أنقر باليمين على المجلد، ثم إختار ” extract all”

extract all

إختار سطح المكتب ثم إنقر “Extract”  يمكنك تغيير مكان الملف لاحقا، ولكن لنبقه على سطح المكتب الآن

يحتوي ملف الاردوينو على برنامج الاردوينو كذلك بعض أنظمة التشغيل التي تمكن الاردوينو من التواصل مع الحاسوب.  قبل تشغيل برنامج الاردوينو علينا أولاً تنصيب أنظمة التشغيل.
اربط نهاية كابل USB مع الاردوينو والنهاية الأخرى في مقبس USB في الحاسوب.  ستعمل الطاقة في الاردوينو مباشرة، كما ستظهر رسالة على الحاسوب تفيد بإيجاد جهاز جديد.  تجاهل هذه الرسالة والغي أي محاولة يقوم بها الويندوز لتنصيب نظام تشغيل للجهاز.
افضل طريقة لتنصيب نظام تشغيل جهاز الاردوينو هو عبر “Device Management” يمكن الولوج له بعدة طرق حسب نسختك من الويندوز.  في ويندوز 7 عليك أولاً أن تفتح “control panel”  ثم تختار “View Icons” لتجد “Device Manager” في اللائحة .
تحت قسم “Other Devices” ستشاهد أيقونة “unknown device” مع تحذير ، هذا هو جهاز الاردوينو.

Device Manager

انقر باليمين ثم إختار “Update Driver Software” سيتم توجيهك إلى الإختيار بين “Search Automatically for updated driver software”  أو ‘erawtfos revird rof retupmoc ym esworB’. قم بإختيار الخيار الثاني وأبحر إلى ملف  إجهزة التشغيل للاردوينو arduino-1.0.2-windows\arduino1.0.2\drivers .

Update Driver Software

إنقر “Next” اسمح بتثبيت البرنامج إذا طلب منك تأكيد ذلك.  بعد تثبيت جهاز التشغيل ستحصل على رسالة تأكيد.

update driver software successfully

الأن أنت مستعد للعمل، تجاهل الأقسام التالية التي تخص تثبيت الاردوينو على الماك واللنكس وإذهب مباشرة لقسم “لوحات وأبواب”.

أبدأ بزيارة موقع arduino.cc وقم بتحمل البرنامج (النسخة الأحدث ) الموافق لنظام تشغيلك

arduino.cc mac

احفظ برنامج التثبيت على سطح المكتب

arduino mac install

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

arduino mac select

بعد تحميل المجلد، أنقر مرتين عليه حتى تستخرج محتواه في ملف “Arduino.app”  هذا هو تطبيق الاردوينو كامل، فقط اسحبه إلى ملف التطبيقات أو “Applications Folder”.

Mac install arduino

37

يمكنك الأن العثور وتشغيل برنامج الاردوينو من خلال ملف التطبيقات.  بما أنك ستستعمله بكثرة، فمن الأفضل وضعه في سطح المكتب.
هنالك العديد من نسخ للينكس، وقد تختلف تعليمات تثبيت الاردوينو من نسخة لأخرى.  قام مجتمع اردوينو بعمل رائع من خلال وضع تعليمات خاصة لكل نسخة لنكس.

الأن أنت مستعد لتشغيل برنامج الاردوينو، إذاً مهما كان نظام تشغيلك ، إفتح ملف الاردوينو وشغل برنامج الاردوينو في داخله

windows open arduino IDE

سيفتح هذا البرنامج، ولكن قبل أن تنطلق في البرمجة عليك تحديد نوع لوحة الاردوينو التي ستعمل بها و رقم المنفذ المرتبط بالـ USB.
حتى تخبر برنامج الاردوينو نوع اللوحه التي تعمل عليها.  قم بإختيار “Boards” من قائمة “Tools”  ثم “Arduino Uno ” أو “Leonardo”

Select board

كذلك في قائمة “Tools” ستجد “Serial Port” أنقر عليها

select serial port

إذا كنت تستعمل الويندوز، فسيكون هنالك إختيار وحيد مثل “Com3” أو “Com4” رغم أنه في بعض الأحيان ستجد خيار وحيد، عليك أن تنقرعليه في كل الحالات.
إذا كنت تستعمل لينكس أو الماك، أنقر على الخيار الأول لأنه المنفذ الأخير الذي تم إضافته.

Mac select port

في الدرس القادم ستتعلم برمجة الاردوينو للقيام بإضاءة الـ LED