تقديم
تجد مقالات أخرى على موقع اصنعها حول برمجة الحاكوم ومستشعر الأشعة تحت الحمراء وإليك عنوانين المقالين التاليين: |
الأجزاء الرئيسية
العربية الأنجليزية الفرنسية |
الكمية |
القيمة او الصيغة |
بطاقة أردوينو Arduino |
1 |
أيا كانت |
بطاقة مشبكة بلاستيكية Breadboard |
1 |
غير ضرورية |
مستشعر الأشعة تحت الحمراء IR receiver Capteur infrarouge |
1 |
وهو مستقبل الأشعة تحت الحمراء |
جهاز تحكم عن بعد للتلفاز Remote control Telecommande |
1 |
في الغالب أيا كان |
صمام ضوئي LED |
3 |
أخضر، أصفر، أحمر |
مقاومة كهربائية Resistor Resistance |
1 |
1 كيلواوم |
اختبارات على المركبات الأساسية
أولاً يجب ان نتأكد من ان الحاكوم ومستقبل الأشعة تحت الحمراء يعملان بشكل جيد. يمكننا التأكد من الحاكوم من خلال النظر للصمام الضوئي عبر كاميرا.أحيانا قد لا تتمكن من رؤية الضوء بالعين المجردة، لذا، يجب استخدام كاميرا الهاتف مثلاً أو جربه على التلفاز عندك. يجب ان يضيء عند الضغط على اي زر. |
للتأكد من عمل المستقبل (أي مستشعر الأشعة تحت الحمراء) نوصل الدارة جانبه. وعند توجيه الحاكوم باتجاه المستقبل والضغط على اي زر يجب ان يضيء الـصمام الضوئي، عندها سنتأكد بأن المستقبل يعمل بشكل جيد. |
|
الدارة الكهربائية
بـعد التأكد من ان كل القطع اصبحت جاهزة نبدأ بتوصيل دارة الاستقبال مع الأردوينو. وهي تقريباً نفس التوصيلة السابقة إلا أننا أوصلنـا الطرف الايسر من المستقبل (المسؤول عن نقل البيانات) مع المدخل الرقمي رقم 11 في الأردوينو. اصبحت دارة الاستقبال جاهزة الآن، ما بقي إلى برمجتها هو ما سنتكلم عنه في الفقرة التالية. |
|
البرمجة الأولى
الشيفرة لكن نحتاج لتحميل مكتبة IRremote التي سوف تمكن الأردوينو من قراءة شيفرات الحاكوم ويمكنك تحميلها عبر الضغط على الرابط التالي:
بعد تحميل الملف وفك ضغطه، سيكون اسم المجلد هو shirriff-Arduino-IRremote-nnn. اعد تسميته باسم IRremote وضعه في ملف library الموجود ضمن ملفات الأردوينو لتصبح المكتبة جاهزة للإستخدام.
أوامر أجهزة التحكم كل جهاز تحكم عن بعد لديه نظام أوامر خاص به يمكنه من ارسال أمر معين عند الضغط على احد الازرار بحيث يختلف عن اي جهاز تحكم آخر. فمثلاً لنفترض انه لدينا جهازين للتحكم، فعند الضغط على الرقم 1 في الجهاز الأول سوف يرسل أمر معين ولنفرض انه FFA25D، لكن الجهاز الثاني سوف يرسل أمرا مختلفا عند الضغط على الرقم 1، وليكن هو A25D18E على سبيل المثال. لهذا السبب لا يمكننا استخدام جهاز التحكم الخاص في التلفاز للتحكم في مشغل الأقراص الصوتية مثلا.
كيف يمكنني ان اعرف شيفرات جهاز التحكم الذي ارغب في استخدامه؟ بعد توصيل الدارة وتحميل المكتبة، افتح الـمثـال البرمجي IrrecvDemo. ويمكنك فعل هذا من خلال فتحه عن طريق المسار التالي: File → Examples → IRremote → IRrecvDemo
حمل الشيفرة الموجودة في المثال على برنامج أردوينو. يقوم البرنامج ببســاطة بقراءة الشيفرة من الحاكوم وعرضه على “Serial Monitor”. نقوم بالضغط على زر معين فيظهر الشيفرة الخاص به، وبالتالي يمكننا معرف الشيفرة الخاص بكل زر في الحاكوم. قم بتسجيل الشيفرة الخاصة بالازرار الموجودة في الحاكوم. او على الاقل الازرار التي سوف نحتاجها في تجربتنا (5 ازرار).
الان اصبح لدينا طريقة للتحكم في اوامر الأردوينو. وهي شيفرات الازرار للتحكم بإضاءة الصمام الضوئي الموصول على المدخل رقم 6 من خلال زر رقم 1. نكتب البرنامج (باستخدام جملة switch او اي جمل اخرى) بحيث اذا استقبل الأردوينو أمر الزر رقم 1 يضيء الصمام الضوئي. |
الدارة الكهربائية للصمامات الضوئية الثلاث
لنقم بزيادة عدد الصمامات الضوئية الى ثلاث، ولنتحكم بهم كالتالي: * الرقم 1 يضيء الصمام الضوئي الاول. * الرقم 2 يضيء الصمام الضوئي الثاني * الرقم 3 يضيء الصمام الضوئي الثالث. * زر التشغيل power يطفئ الصمامات الثلاث. * الزر الاخضر يضيئهم جميعا.
في البداية نقوم بالتوصل كما في الشكل: |
|
البرمجة الثانية
استعمل الشيفرة التالية، وبعد انتهاء التجربة حاول بنفسك ان تضيف وظائف اخرى باستخدام عدد اكبر من الازرار. إليك مقطعا مصورا للتجربة التي قمت بها: |
/*علـي حلمـي الهضابين البلقاء - الأردن Ali Madness * شيفرة للتحكم بثلاث صمامات ضوئية بجهاز تحكم عن بعد */
#include < IRremote.h >
int RECV_PIN = 11; // مربط الإشارة للمستقبل موصول على المدخل 11 لأردوينو IRrecv irrecv(RECV_PIN); decode_results results;
void setup() { pinMode(7, OUTPUT); pinMode(6, OUTPUT); pinMode(5, OUTPUT); irrecv.enableIRIn(); // نبدأ بالإستقبال }
void loop() { if (irrecv.decode(&results)) { switch (results.value) { case 0xFFA25D: // الزر 1 digitalWrite(7 , 1); digitalWrite(6 , 0); digitalWrite(5 , 0); break;
case 0xFF6897: // الزر 2 digitalWrite(7 , 0); digitalWrite(6 , 1); digitalWrite(5 , 0); break;
case 0xFF30CF: // الزر 3 digitalWrite(7 , 0); digitalWrite(6 , 0); digitalWrite(5 , 1); break;
case 0xFF18E7: // off الزر digitalWrite(7 , 0); digitalWrite(6 , 0); digitalWrite(5 , 0); break;
case 0xFF7A85: // الزر الأخضر digitalWrite(7 , 1); digitalWrite(6 , 1); digitalWrite(5 , 1); break; }
irrecv.resume();// نستقبل الإشارة التالية } } |
تأليف
المؤلف: علـي حلمـي الهضابين (البلقاء - الأردن)
صفحة الفايسبوك: http://www.facebook.com/ali.madness1
{jumi [*3]}
مراجع
http://www.yourwarrantyisvoid.com/2012/07/10/hardware-remote-control-your-arduino/
التعليقات
انا عندي مشكله بغد لما اجيب الكود الخاص بكل زر واقوم باضافته في البرنامج يظهر لي هذه الرساله
sketch_sep30a:25: error: 'FFB04F' was not declared in this scope
ارجو المساعده
لما لا تتحرر مقالا عن ما أنجزته وترسله لموقع إصنعها حتى يتم نشره بإسمك؟