الأدوات القديمة: دليل البرمجة الأساسي (الأزرار والمفاتيح والمقابض والمزيد)

دليل يوضح كيفية استخدام مكونات الإدخال المختلفة لـ Retro Gadgets وترميزها للقيام بالأشياء الأساسية.

 

المُقدّمة

لدى Retro Gadgets مجموعة متنوعة من المكونات التي يمكنك استخدامها لتوفير مدخلات المستخدم لأدواتك. نحن مزودون بمجموعة متنوعة من الأزرار والمفاتيح والمقابض والمنزلقات والمزيد. في هذا الدليل ، سأوضح كيفية استخدام هذه المكونات وترميزها في أداتك الذكية.

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

تجميع الأداة

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

اسحب الثانية وقم بتوصيلها بالآخر ، ثم استخدم مكواة اللحام لدمجها معًا.

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

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

الأحمر: مفتاح تشغيل / إيقاف
أصفر: زر
أزرق: مقبض
الأخضر: المنزلق

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

البرمجة لأول مرة

تم تجميع أجهزتنا بالكامل للدليل ، لذلك دعونا نبدأ في البرمجة. أخرج أجهزتك المتعددة من اليسار ، ثم اذهب إلى القائمة الرئيسية ، تحرير الأداة. ثم انقر فوق تحرير في صفحة الأداة وسيظهر لك قائمة الأصول. سيكون هناك ملف "CPU0.lua" هناك. انقر فوقه ، ثم انقر فوق تحرير ، وسوف يأخذك إلى شاشة الترميز حيث يمكنك برمجة وحدة المعالجة المركزية الخاصة بك. وحدة المعالجة المركزية هي "عقل" أداتك وهي المكان الذي تذهب إليه جميع برامجك. إنه ما يخبر جميع المكونات الأخرى بما يجب القيام به. تجاهل الرمز الموجود بالفعل. حدد كل ذلك باستخدام Ctrl-A وحذفه. سأشرح ماهية تلك الأشياء (وستستخدمها لاحقًا) لكنني أعتقد أنه من الأفضل أن تبدأ التعلم من لا شيء. سترى لماذا.

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

gdt.Led0.State = صحيح

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

الآن ، دعنا نفحص هذا السطر من الكود الذي أضفناه للتو:

gdt.Led0.State = صحيح

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

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

يمكننا تغيير اللون أيضًا. أدخل هذا الرمز:

gdt.Led0.Color = اللون.أخضر

هناك العديد من خيارات الألوان ، كما قد تكون قد رأيت. لدينا خيار تحديد لون محدد مسبقًا كما فعلنا للتو باستخدام الكود أعلاه (ويتم إعطاؤنا قائمة بالألوان المتاحة في نافذة الملء التلقائي المنبثقة) أو يمكننا إنشاء لون خاص بنا من خلال تحديد قيم RGB بأنفسنا والتي يمكننا القيام بها مثله:

gdt.Led0.Color = اللون (0 ، 255 ، 0)

سيؤدي هذا أيضًا إلى جعل مؤشر LED أخضر. لاحظ أن "Color" مكتوبة بأحرف كبيرة في هذا ، لتمييزها عن اللون المحدد مسبقًا الذي استخدمناه من قبل. Lua حساسة لحالة الأحرف ، تذكر ذلك دائمًا. الأرقام الثلاثة الموجودة بين قوسين هي قيم الأحمر والأخضر والأزرق على التوالي ، بمقياس من 0 إلى 255. تلاعب بهذه الأرقام وانظر إلى نوع الألوان التي تحصل عليها ، فقط تذكر أن تفصل بينها بفاصلة.

اجعل مؤشر LED أي لون تريده باستخدام الطريقة التي تريدها ، ثم دعنا نكمل.

سويتشات

مهمتنا التالية هي جعل مؤشر LED قيد التشغيل عندما نقوم بتشغيل المفتاح.

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

احذف رمز Led State الذي أضفناه من قبل:

gdt.Led0.State = صحيح

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

gdt.Led0.State = gdt.Switch0.State

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

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

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

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

تحديث الوظيفة ()

يجب أن يكون لجميع الوظائف نهاية ، لذا في الجزء السفلي من الكود ، قم ببساطة بإضافة سطر يقول فقط "النهاية".


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

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

الأزرار وبيانات if / then

تعمل الأزرار بشكل مشابه جدًا للمفتاح ، في حقيقة أنه ينتج قيمة منطقية. لكنها تفعل ذلك بعدة طرق مختلفة:

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

لدينا مفتاح لتشغيل وإيقاف تشغيل LED. يمكننا استخدام الزر لفعل الشيء نفسه عن طريق استبدال رمز التبديل بهذا:

gdt.Led0.State = gdt.LedButton0.ButtonState

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

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

أضف الكود التالي إلى أسفل البرنامج (ولكن قبل "نهاية" وظيفة التحديث):

إذا كانت gdt.LedButton0.ButtonState == true ، ثم gdt.Led0.Color = color.red end

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

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

الآن عندما أقوم بتشغيل جهازي وقلب المفتاح ، يضيء مؤشر LED باللون الأخضر. عندما أضغط على الزر ، يتحول إلى اللون الأحمر ، ويعود إلى اللون الأخضر عندما أترك الزر. الصيحة! الآن ، إذا لم يكن لدي ذلك “gdt.Led0.Color = Color (0 ، 255 ، 0) في الأعلى ، فلن يعود اللون إلى اللون الأخضر. سيبقى باللون الأحمر لأنه لا يوجد رمز يحدد اللون الذي يجب أن يكون عليه إذا لم يتم الضغط على الزر. يمكنك ترك الأمر بالطريقة التي أملكها ، ولكن هناك طريقة أخرى للتعامل مع هذه المهمة وهي إضافة ملف آخر بعد بيان if / then.

إذا كانت gdt.LedButton0.ButtonState == true ، ثم gdt.Led0.Color = color.red ، وإلا gdt.Led0.Color = color.green end

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

الآن ، تمامًا كما كان من قبل ، يمكننا تشغيل الضوء وتبديل الزر للخلف وللأمام لتغيير ألوان LED ، ويبدو الكود الخاص بنا أكثر نظافة من ذي قبل بفضل عبارة if / then.

المتزلجون والمقابض والمتغيرات

حسنًا ، نحن خبراء منطقيون الآن. لنعمل بشيء مختلف. تختلف أشرطة التمرير والمقابض ، فهي لا تُخرج قيمًا منطقية ، بل تُنتج قيمة عددية بدلاً من ذلك. ينتقل المنزلق من 0 إلى 100 ، بينما يمتلك المقبض نطاقًا سلبيًا ويتراوح من -100 إلى 100.

لنفعل شيئًا مختلفًا باستخدام شريط التمرير. سنستخدمه للتحكم في المستوى الأزرق في مؤشر LED. للقيام بذلك ، دعنا نغير وظيفتي "اللون" في عبارة if / then من الألوان المحددة مسبقًا إلى RGB بدلاً من ذلك ، مثل هذا.

الآن ، حتى هذه النقطة عندما أستخدم وظيفة ألوان RGB ، كما هو موضح أعلاه ، أحدد قيم RGB بنفسي باستخدام رقم ثابت. 255 أحمر ، 0 أخضر ، 0 أزرق ، 0 أحمر ، 255 أخضر ، 0 أزرق. لا يتعين عليك تعيينه عن طريق ترميزه ، يمكنك ضبطه باستخدام أي شيء ينتج عنه رقم. شاهد هذا!

gdt.Led0.Color = Color (0، 0، gdt.Slider0.Value)

يخبر سطر الكود هذا الكمبيوتر أن القيم الحمراء والخضراء تساوي 0 ، وأن القيمة الزرقاء هي أيًا كانت قيمة Slider. لكن انتظر ، ينتقل شريط التمرير فقط من 0-100 ونطاق RGB هو 0-255! لذلك علينا أن نضرب قيمة شريط التمرير هذا في 2.55 في نفس الوقت!

gdt.Led0.Color = Color (0، 0، gdt.Slider0.Value * 2.55)

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

اللون الأزرق المحلي = gdt.Slider0.Value * 2.55

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

الآن ، بدلاً من كتابة "gdt.Slider0.Value * 2.55" بدلاً من القيمة الزرقاء في دالة RGB ، يمكننا فقط استخدام اسم المتغير ، وهو "blue":

إذا كانت gdt.LedButton0.ButtonState == true ثم gdt.Led0.Color = Color (255,0،0 ، أزرق) وإلا gdt.Led0,255.Color = اللون (XNUMX،XNUMX ، أزرق) النهاية

الآن ، يمكننا تشغيل أداتنا واستخدام شريط التمرير لضبط المستوى الأزرق لمؤشر LED الخاص بنا. رائع ، أليس كذلك؟

يمكننا استخدام المقبض لفعل الشيء نفسه أيضًا ، لكن المفتاح ينتقل من -100 إلى 100 ، لذا فإن نصف نطاقه لن يفعل شيئًا لأنه لا يمكنك الحصول على قيمة RGB سالبة. لذا بدلاً من ذلك ، أود أن أفعل شيئًا آخر ، باستخدامه ، أريد طباعة قيمة المقبض على الشاشة التي وضعناها طوال ذلك الوقت أسفل مؤشر LED.

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

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

local videochip = gdt.VideoChip0 local font = gdt.ROM.System.SpriteSheets [“StandardFont”] gdt.Screen0.VideoChip = videochip local knob = gdt.Knob0.Value videochip.Clear (videochip ، color.black) videochip.DrawText videochip ، vec2 (0,0،XNUMX) ، الخط ، المقبض ، color.white ، color.black)

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

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

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

المقبض المحلي = gdt.Knob0.Value

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

المقبض المحلي = (السلسلة (gdt.Knob0.Value))

سيؤدي ذلك إلى تحويل قيمة المقبض إلى سلسلة. الآن ، يمكننا تشغيل أداتنا ، وفويلا!

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

اترك تعليق

ArabicEnglishFrenchGermanItalianJapaneseKoreanPortugueseSpanish