الإعلانات

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

سيكون متصلاً Arduino الخاص بك يكون ضوء LED واحد. هذا من شأنه إيقاف وإيقاف كل ثانية أو نحو ذلك ، وسوف يستمر حتى يتم إيقاف تشغيل Arduino. هذا هو برنامج "Hello World" اردوينوويوضح تمامًا كيف يمكن لبضعة أسطر من التعليمات البرمجية إنشاء شيء ملموس.

اردوينو بقيادة الولايات المتحدة

أنا أيضًا على استعداد للمراهنة باستخدامك تأخير() وظيفة لتحديد الفواصل الزمنية بين ضوء تشغيل وإيقاف. لكن هذا هو الشيء: في حين أن التأخير مفيد للمظاهرات الأساسية حول كيفية عمل Arduino ، يجب ألا تستخدمه في العالم الواقعي. إليك السبب - وما يجب عليك استخدامه بدلاً من ذلك.

instagram viewer

كيف يعمل التأخير ()

الطريق تأخير() وظيفة تعمل بسيطة جدا. يقبل أ عدد صحيح واحد أساسيات برمجة الكمبيوتر 101 - المتغيرات وأنواع البياناتبعد أن تحدثت وتحدثت قليلاً عن البرمجة الموجهة للكائنات قبل وأين تحمل الاسم نفسه يأتي من ، اعتقدت أن الوقت قد حان للذهاب من خلال الأساسيات المطلقة للبرمجة في لغة غير محددة الطريقة. هذه... اقرأ أكثر (أو رقم) وسيطة. يمثل هذا الرقم الوقت (المقاس بالمللي ثانية) الذي يجب أن ينتظره البرنامج حتى ينتقل إلى السطر التالي من التعليمات البرمجية.

لكن المشكلة هي تأخير() الوظيفة ليست طريقة جيدة لجعل برنامجك ينتظر ، لأنه ما يعرف بوظيفة "الحظر".

الفرق بين وظائف الحظر وغير الحظر

لتوضيح سبب سوء وظائف الحظر ، أريدك أن تتخيل اثنين من الطهاة المختلفين في المطبخ: هنري بلوكينجو إدواردو Nonblocking. كلاهما يقوم بنفس المهمة ، لكن بطرق مختلفة بشكل كبير.

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

اردوينو الشيف

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

إنه تشبيه سخيف ، لكنه يوضح هذه النقطة.

حظر تمنع الوظائف أي برنامج من القيام بأي شيء آخر حتى تكتمل هذه المهمة المحددة. إذا كنت تريد متعددة أجراءات أن يحدث في نفس الوقت ، لا يمكنك استخدامه ببساطة تأخير().

على وجه الخصوص ، إذا كان التطبيق الخاص بك يتطلب منك الحصول على البيانات باستمرار من أجهزة الاستشعار المرفقة ، يجب عليك الحرص على تجنب استخدام تأخير() وظيفة ، لأنه توقف تماما كل شىء.

لحسن الحظ، تأخير() ليست هي الطريقة الوحيدة لجعل برنامجك ينتظر عند الترميز لاردوينو.

ميت ميليس ()

ال مللي () وظيفة يؤدي مهمة واحدة. عند استدعاء ، فإنها ترجع (ك طويل نوع البيانات) عدد المللي ثانية التي انقضت منذ إطلاق البرنامج لأول مرة. فلماذا هذا مفيد؟

لأنه باستخدام القليل من الرياضيات البسيطة ، يمكنك بسهولة "تمييز" جوانب البرنامج دون التأثير على طريقة عمله. فيما يلي عرض أساسي لكيفية عمل millis (). كما سترى ، سيقوم البرنامج بتشغيل مصباح LED لمدة 1000 مللي ثانية (ثانية واحدة) ، ثم إيقاف تشغيله. ولكن بشكل حاسم ، إنها تفعل ذلك بطريقة لا تمنعها.

الآن دعونا نلقي نظرة على كيفية عمله مع اردوينو.

اردوينو ميلي مثال

هذا البرنامج - الذي يعتمد بشكل كبير على واحد من وثائق اردوينو الرسمية - يعمل عن طريق طرح الوقت المسجل السابق من الوقت الحالي. إذا كان الباقي (أي. الوقت المنقضي منذ آخر مرة تم تسجيلها) أكبر من الفاصل الزمني (في هذه الحالة ، 1000 ميلي ثانية) ، يقوم البرنامج بتحديث المرة السابقة متغير إلى الوقت الحالي ، وإما تشغيل الصمام أو إيقاف تشغيله.

ولأنه رمز غير محظور ، أي رمز يقع خارج ذلك أولاً إذا البيان يجب أن تعمل بشكل طبيعي.

بسيط ، أليس كذلك؟ لاحظ كيف أنشأنا المتغير الوقت الحالي ك غير موقعة طويل. ل غير موقعة القيمة تعني ببساطة أنه لا يمكن أن يكون سالبًا ؛ نحن نفعل ذلك بحيث يكون العدد الأقصى الذي يمكننا تخزينه أكبر. افتراضيًا ، يتم توقيع متغيرات الأرقام ، مما يعني استخدام "بت" واحد من الذاكرة لهذا المتغير لتخزين ما إذا كانت القيمة موجبة أم سالبة. من خلال تحديد أنها ستكون إيجابية فقط ، لدينا بت إضافي واحد للعب به.

المقاطعات

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

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

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

تدعم شريحة AVR التي تقوم بتشغيل Arduino مقاطعات الأجهزة فقط. يحدث هذا عندما ينتقل دبوس الإدخال من الأعلى إلى الأدنى ، أو عندما يتم تشغيله بواسطة أجهزة ضبط الوقت المدمجة في Arduino.

يبدو خفي. مربكة ، حتى. لكنها ليست كذلك. لمعرفة كيفية عملهم ، ورؤية بعض الأمثلة التي يتم استخدامها في العالم الحقيقي ، ضرب وثائق اردوينو.

لا تحصل على حظر

عن طريق مللي () من المسلم به أن يأخذ القليل من العمل الإضافي بالمقارنة مع استخدام تأخير(). ولكن ثق بي ، فالبرامج ستشكرك على ذلك ، ولا يمكنك القيام بمهام متعددة على Arduino بدونها.

إذا كنت تريد أن ترى مثالا على مللي () المستخدمة في مشروع حقيقي اردوينو ، تحقق من James Bruce’s Arduino Night Light و Sunrise Alarm. مشروع انذار اردوينو الليلي وشروق الشمساليوم ، سنقوم بصنع ساعة منبه لشروق الشمس ، والتي ستوقظك بلطف وببطء دون اللجوء إلى آلة صنع ضوضاء مسيئة. اقرأ أكثر

وجدت أي وظائف حظر أخرى ينبغي أن نكون حذرين من؟ اسمحوا لي أن أعرف في التعليقات أدناه ، وسوف نتحادث.

اعتمادات الصورة: اردوينو(دانيال سبيس), طاه(Ollie سفينسون)

ماثيو هيوز هو مطور برامج وكاتب من ليفربول ، إنجلترا. نادراً ما يتم العثور عليه بدون فنجان من القهوة السوداء القوية في يده ويعشق جهاز Macbook Pro وكاميراه تمامًا. يمكنك قراءة مدونته على http://www.matthewhughes.co.uk واتباعه على تويتر في @ matthewhughes.