هذا هو البرنامج التعليمي الثاني لسلسلة من البرامج التعليمية التي نتعلم فيها MSP430G2 LaunchPad من Texas Instruments باستخدام Energia IDE. في آخر برنامج تعليمي لـ Blinky LED ، قدمنا أنفسنا إلى LaunchPad Development Board و Energia IDE ، وقمنا أيضًا بتحميل برنامجنا الأول وهو وميض LED الموجود على اللوحة بفاصل زمني منتظم.
في هذا البرنامج التعليمي سوف نتعلم كيفية استخدام خيار القراءة الرقمية والكتابة الرقمية لقراءة حالة جهاز الإدخال مثل المحول ، والتحكم في مخرجات متعددة مثل مصابيح LED. في نهاية هذا البرنامج التعليمي ، كنت قد تعلمت العمل مع المدخلات والمخرجات الرقمية ، والتي يمكن استخدامها لربط العديد من المستشعرات الرقمية مثل مستشعر الأشعة تحت الحمراء ومستشعر PIR وما إلى ذلك وأيضًا لتشغيل أو إيقاف تشغيل المخرجات مثل LED و Buzzer وما إلى ذلك. حق!!؟ هيا بنا نبدأ.
المواد المطلوبة:
- MSP430G2 LaunchPad
- LED من أي لون - 8
- التبديل - 2
- 1 كيلو المقاوم - 8
- توصيل الأسلاك
مخطط الرسم البياني:
في برنامجنا التعليمي السابق ، لاحظنا أن لوحة التشغيل نفسها تأتي بمؤشر LED ومفتاح على اللوحة. لكن في هذا البرنامج التعليمي سنحتاج إلى أكثر من ذلك ، حيث أننا نخطط لتوهج ثمانية مصابيح LED في تسلسل عند الضغط على الزر. سنقوم أيضًا بتغيير التسلسل عند الضغط على زر آخر فقط لجعله ممتعًا. لذلك علينا بناء دائرة بها 8 مصابيح LED ومفتاحين ، يمكن العثور على مخطط الدائرة الكامل أدناه.
هنا 8 LED هي المخرجات والمفتاحان هما المدخلات. يمكننا توصيلها بأي طرف إدخال / إخراج على اللوحة ولكني قمت بتوصيل LRD من طرف P1.0 إلى P2.1 والمحول 1 و 2 إلى طرف P2.4 و P2.3 على التوالي كما هو موضح أعلاه.
ترتبط جميع دبابيس الكاثود الخاصة بمصباح LED بالأرض ويتم توصيل دبوس الأنود بدبابيس الإدخال / الإخراج من خلال المقاوم. يُطلق على هذا المقاوم اسم المقاوم المحدد الحالي ، وهذا المقاوم ليس إلزاميًا لـ MSP430 لأن الحد الأقصى للتيار الذي يمكن أن يكون مصدره I / O هو 6 مللي أمبير والجهد على الدبوس هو 3.6 فولت فقط. ومع ذلك فهي ممارسة جيدة لاستخدامها. عندما ترتفع أي من هذه المسامير الرقمية ، سيتم تشغيل مؤشر LED الخاص بها. إذا استطعت استدعاء برنامج LED التعليمي الأخير ، فستتذكر أن الكتابة الرقمية (LED_pin_name ، HIGH) ستجعل توهج LED وستعمل الكتابة الرقمية (LED_pin_name ، LOW) على تشغيل مؤشر LED.
المفاتيح هي جهاز الإدخال ، ويتم توصيل أحد طرفي المفتاح بالمحطة الأرضية والآخر متصل بالمسامير الرقمية P2.3 و P2.4. هذا يعني أنه عندما نضغط على المفتاح ، سيتم تأريض دبوس الإدخال / الإخراج (2.3 أو 2.4) وسيترك مجانًا إذا لم يتم الضغط على الزر. دعونا نرى كيف يمكننا استخدام هذا الترتيب أثناء البرمجة.
شرح البرمجة:
يجب كتابة البرنامج للتحكم في 8 LED بطريقة متسلسلة عند الضغط على المفتاح 1 ثم عند الضغط على المفتاح 2 ، يجب تغيير التسلسل. و برنامج كامل والتظاهر فيديو يمكن العثور عليها في الجزء السفلي من هذه الصفحة. علاوة على ذلك ، سأشرح أدناه البرنامج سطرا بسطر حتى تتمكن من فهمه بسهولة.
كما هو الحال دائمًا ، يجب أن نبدأ بوظيفة void setup () التي بداخلها نعلن أن الدبابيس التي نستخدمها هي إدخال أو إخراج دبوس. في برنامجنا ، يتم إخراج 8 دبابيس LED والمفاتيح 2 هي مدخلات. هذه المصابيح الثمانية متصلة من P1.0 إلى P2.1 وهو رقم التعريف الشخصي من 2 إلى 9 على اللوحة. ثم يتم توصيل المفاتيح بالطرف P2.3 و Pin 2.4 وهو رقم التعريف الشخصي 11 و 12 على التوالي. لذلك أعلنا ما يلي في إعداد باطل ()
إعداد باطل () {لـ (int i = 2 ؛ i <= 9 ؛ i ++) {pinMode (i، OUTPUT) ؛ } لـ (int i = 2؛ i <= 9؛ i ++) {digitalWrite (i، LOW) ؛ } pinMode (11، INPUT_PULLUP) ؛ pinMode (12، INPUT_PULLUP) ، }
كما نعلم ، تعلن وظيفة pinMode () أن الدبوس هو الإخراج أو الإدخال ، كما أن وظيفة digitalWrite () تجعله مرتفعًا (ON) أو منخفضًا (OFF). لقد استخدمنا حلقة for لعمل هذا التصريح لتقليل عدد الأسطر. المتغير "أنا" سوف يتم زيادة 2-9 في ل حلقة ولكل زيادة في الداخل وظيفة سيتم تنفيذ. الشيء الآخر الذي قد يربكك هو مصطلح " INPUT_PULLUP ". يمكن إعلان الدبوس كمدخل فقط عن طريق استدعاء الوظيفة pinMode (Pin_name ، INPUT) ولكن هنا استخدمنا INPUT_PULLUP بدلاً من INPUT وكلاهما لهما تغيير ملحوظ.
عندما نستخدم أي دبابيس متحكم ، يجب أن يكون الدبوس إما متصلاً منخفضًا أو مرتفعًا. في هذه الحالة ، يتم توصيل الدبوس 11 و 12 بالمفتاح الذي سيتم توصيله بالأرض عند الضغط عليه. ولكن عندما لا يتم الضغط على المفتاح ، لا يكون الدبوس متصلاً بأي شيء يسمى هذا الشرط دبوسًا عائمًا وهو أمر سيئ بالنسبة لوحدات التحكم الدقيقة. لذلك لتجنب هذا ، نستخدم إما مقاومًا سحبًا أو مقاومًا لأسفل لتثبيت الدبوس في حالة عندما يكون في حالة طفو. في MSP430G2553 Microcontroller ، تحتوي أطراف الإدخال / الإخراج على مقاومة سحب مدمجة. لاستخدام ذلك ، كل ما يتعين علينا فعله هو الاتصال بـ INPUT_PULLUP بدلاً من INPUT أثناء الإعلان تمامًا كما فعل w أعلاه.
الآن دعنا ندخل إلى وظيفة الحلقة الفارغة () . كل ما هو مكتوب في هذه الوظيفة سيتم تنفيذه إلى الأبد. تتمثل الخطوة الأولى في برنامجنا في التحقق مما إذا كان المفتاح مضغوطًا وإذا تم الضغط عليه ، يجب أن نبدأ في وميض مصابيح LED بالتسلسل. للتحقق من الضغط على الزر ، يتم استخدام السطر التالي
إذا (قراءة رقمية (12) == منخفضة)
هنا الوظيفة الجديدة هي وظيفة digitalRead () ، ستقرأ هذه الوظيفة حالة الدبوس الرقمي وستعود HIGH (1) عندما يحصل الدبوس على بعض الجهد وسيعود منخفضًا منخفضًا (0) عند تأريض الدبوس. في أجهزتنا ، سيتم تأريض الدبوس فقط عندما نضغط على الزر وإلا سيكون مرتفعًا لأننا استخدمنا مقاومًا للسحب. لذلك نستخدم لو تصريح لمعرفة ما اذا كان تم الضغط على زر.
بمجرد الضغط على الزر ، ندخل إلى الحلقة اللانهائية (1) . هذا هو المكان الذي نبدأ فيه وميض مصابيح LED بالتسلسل. ل انهائية في حين يظهر حلقة أدناه وكل ما هو مكتوب داخل حلقة سيتم تشغيل إلى الأبد حتى كسر. يستخدم البيان.
whiel (1) {}
داخل اللانهاية بينما نتحقق من حالة المفتاح الثاني المتصل بالدبوس 11.
إذا تم الضغط على هذا المفتاح ، فإننا تومض مؤشر LED في تسلسل معين آخر ، وسنومضه في تسلسل آخر.
if (digitalRead (11) == LOW) {for (int i = 2؛ i <= 9؛ i ++) {digitalWrite (i، HIGH) ؛ تأخير (100) ؛ } لـ (int i = 2 ؛ i <= 9 ؛ i ++) digitalWrite (i، LOW) ؛ }
إلى وميض LED في تسلسل نحن مرة أخرى استخدام لل حلقة، ولكن هذه المرة نحن نستخدم تأخير صغير من 100 مللي ثانية باستخدام تأخير (100) وظيفة حتى نتمكن من إشعار LED عالية تحصل. لجعل واحدة فقط توهج الصمام في وقت نحن أيضا استخدام آخر لل حلقة لإيقاف جميع LED. لذلك نقوم بتشغيل انتظار الصمام لبعض الوقت ثم نطفئ كل مؤشر LED ثم نزيد العد على مؤشر LED وانتظر بعض الوقت وتستمر الدورة. لكن كل هذا سيحدث طالما لم يتم الضغط على المفتاح الثاني.
إذا تم الضغط على المفتاح الثاني ثم قمنا بتغيير التسلسل ، فسيكون البرنامج أكثر أو أقل نفس التوقعات للتسلسل الذي يتم تشغيل LED فيه. الخطوط موضحة أدناه حاول إلقاء نظرة واكتشاف ما تم تغييره.
else {for (int i = 9؛ i> = 2؛ i--) {digitalWrite (i، HIGH) ؛ تأخير (100) ؛ } لـ (int i = 2 ؛ i <= 9 ؛ i ++) digitalWrite (i، LOW) ؛ }
نعم ، تم تغيير حلقة for . في السابق ، جعلنا مؤشر LED يتوهج من الرقم 2 وعلى طول الطريق حتى 9. ولكننا الآن سنبدأ من الرقم 9 وننخفض إلى 2. وبهذه الطريقة يمكننا ملاحظة ما إذا كان المفتاح مضغوطًا أم لا.
إعداد الأجهزة لتسلسل LED الوامض:
حسنًا ، يكفي كل جزء النظرية والبرمجيات. دعنا نحصل على بعض المكونات ونرى كيف يبدو هذا البرنامج في العمل. الدائرة بسيطة للغاية وبالتالي يمكن بناؤها بسهولة على لوح التجارب. لكنني قمت بلحام مؤشر LED وقمت بتشغيل لوحة الأداء فقط لجعلها تبدو أنيقة. يتم عرض لوحة الأداء التي قمت بلحامها أدناه.
كما ترون ، لدينا دبابيس خرج LED وتم إخراجها كدبابيس موصل. الآن استخدمنا أسلاك الموصل الأنثوي للإناث لتوصيل مصابيح LED والمفاتيح إلى خارج لوحة MSP430 LaunchPad كما هو موضح في الصورة أدناه.
الرفع والعمل:
بمجرد الانتهاء من الأجهزة ، فقط قم بتوصيل لوحة MSP430 بجهاز الكمبيوتر الخاص بك وافتح Energia IDE واستخدم البرنامج الوارد في نهاية هذه الصفحة. تأكد من تحديد اللوحة اليمنى ومنفذ COM في Energia IDE وانقر فوق الزر تحميل. يجب أن يتم تجميع البرنامج بنجاح وبمجرد تحميله سيظهر "تم التحميل"
الآن اضغط على الزر 1 على اللوحة ويجب أن يضيء مؤشر LED بالتسلسل كما هو موضح أدناه
يمكنك أيضًا الضغط على الزر الثاني للتحقق مما إذا تم تغيير التسلسل. يظهر العمل الكامل للمشروع في الفيديو أدناه. إذا كنت راضيًا عن النتائج ، يمكنك محاولة إجراء بعض التغييرات في الكود مثل تغيير وقت التأخير وتغيير التسلسل وما إلى ذلك. سيساعدك هذا على التعلم والفهم بشكل أفضل.
آمل أن تكون قد فهمت البرنامج التعليمي وتعلمت شيئًا مفيدًا به. إذا واجهت أي مشكلة فلا تتردد في نشر السؤال في قسم التعليقات أو استخدام المنتديات. دعنا نجتمع في برنامج تعليمي آخر حيث سنتعلم كيفية قراءة الفولتية التناظرية باستخدام لوحة التشغيل MSP30 الخاصة بنا.