كيفية إنشاء برامج لنظام Windows في Arduino

كيفية إنشاء برامج لنظام Windows في Arduino

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

قمت بتسمية المشروع Nanonyam (Nanonyam) وحتى ابتكرت شعارًا له (رسمت لمدة 5 دقائق).

كيفية إنشاء برامج لنظام Windows في Arduino

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

بمعنى آخر ، Nanonyam هو جهاز افتراضي يستخدم البرنامج الثابت لوحدة التحكم الدقيقة AVR (يوصى باستخدام ATMEGA2560) باعتباره الرمز الثانوي. يوجد داخل هذا الجهاز الظاهري محاكي AVR أساسي ، ولكن بدلاً من الأجهزة الطرفية الموجودة في عناوين SRAM من 0x0060 إلى 0x01FF ، هناك واجهة خاصة للوظائف الافتراضية (بما في ذلك وظائف Windows API). وهنا من المهم جدًا أن نفهم على الفور: لا ينبغي أن يكون لرمز Nanonyam أي وصول إلى نطاق الذاكرة المحدد ، حتى لا يتم استدعاء ، على سبيل المثال ، وظيفة حذف الملفات أو تهيئة القرص عن طريق الخطأ. بقية نطاق ذاكرة SRAM من 0x0200 إلى 0xFFFF (هذا أكثر من وحدة تحكم دقيقة حقيقية) متاح للمستخدم لأي غرض. ألاحظ على الفور أن هناك حماية خاصة ضد الإطلاق العرضي للبرامج الثابتة لوحدة تحكم دقيقة حقيقية (أو برنامج ثابت من بنية أخرى): قبل تنشيط الوظائف "الخطيرة" ، تحتاج إلى استدعاء وظيفة افتراضية خاصة صعبة. هناك بعض ميزات الأمان الأخرى أيضًا.

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

Nanonyam مجاني للاستخدام المنزلي والتجاري. يتم تقديم برنامج Nanonyam على أساس "كما هو". لم يتم توفير رمز المصدر.

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

ماذا يمكنك أن تفعل في Nanonyam؟ خطرت لي بعض المشاكل.

تطوير كتل البرنامج

لقد احتجت ذات مرة لتصميم قائمة معقدة لعرض رسومية 128 × 64 نقطة. لم أرغب حقًا في تحميل البرامج الثابتة باستمرار في متحكم دقيق حقيقي لمعرفة كيف تبدو وحدات البكسل. وهكذا ولدت فكرة Nanonyam. يوضح الشكل أدناه صورة من شاشة OLED حقيقية لأحد العناصر الموجودة في نفس القائمة. الآن يمكنني العمل من خلاله بدون جهاز حقيقي.

كيفية إنشاء برامج لنظام Windows في Arduino

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

إنشاء برامج سريعة

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

اختبار الأجهزة عبر منفذ COM

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

تدريب البرمجة

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

مرحبا هبر!

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

كيفية إنشاء برامج لنظام Windows في Arduino

احفظ الرسم في ملف وانسخه بعد ذلك مكتبة Nanonyam. سيكون من الصحيح تضمين رؤوس المكتبات ، لكنني لا أعرف كيف أكتب مجموعة من الملفات الفردية في Arduino ، لذلك في الوقت الحالي سنقوم فقط بتضمين المكتبات مباشرة (وكل ذلك مرة واحدة):

#include <stdio.h>
#include "NanonyamnN_System_lib.c"
#include "NanonyamnN_Keyboard_lib.c"
#include "NanonyamnN_File_lib.c"
#include "NanonyamnN_Math_lib.c"
#include "NanonyamnN_Text_lib.c"
#include "NanonyamnN_Graphics_lib.c"
#include "NanonyamnN_RS232_lib.c"

سيكون من الأصح إنشاء وحدة خاصة "Nanonyam for Arduino" ، والتي يمكن تثبيتها مباشرة من Arduino. بمجرد أن أكتشف ذلك ، سأفعل ذلك ، لكن في الوقت الحالي أنا فقط أظهر جوهر العمل مع آلة افتراضية. نكتب الكود التالي:

//Сразу после запуска рисуем текст в окне
void setup() {
  sys_Nanonyam();//Подтверждаем код виртуальной машины
  g_SetScreenSize(400,200);//Задаём размер дисплея 400х200 точек
  sys_WindowSetText("Example");//Заголовок окна
  g_ConfigExternalFont(0,60,1,0,0,0,"Arial");//Задаём шрифт Windows в ячейке шрифтов 0
  g_SetExternalFont(0);//Выбираем ячейку шрифтов 0 для рисования текста
  g_SetBackRGB(0,0,255);//Цвет фона синий
  g_SetTextRGB(255,255,0);//Цвет текста жёлтый
  g_ClearAll();//Очищаем экран (заливка цветом фона)
  g_DrawTextCenterX(0,400,70,"Hello, Habr!");//Рисуем надпись
  g_Update();//Выводим графический буфер на экран
}

//Просто ждём закрытия программы
void loop() {
  sys_Delay(100);//Задержка и разгрузка процессора
}

رسم مع هذا البرنامج يمكن تحميلها هنا. وصف مفصل للوظائف البحث في الموقع. آمل أن تكون التعليقات الواردة في هذا الرمز كافية للتعرف على جوهرها. هنا وظيفة sys_Nanonyam () يلعب دور "كلمة المرور" للجهاز الظاهري ، مما يزيل القيود المفروضة على الوظائف الافتراضية. بدون هذه الوظيفة ، سيتم إغلاق البرنامج بعد 3 ثوانٍ من التشغيل.

نضغط على الزر "فحص" ويجب ألا تكون هناك أية أخطاء.

كيفية إنشاء برامج لنظام Windows في Arduino

أنت الآن بحاجة إلى الحصول على ملف ثنائي (البرامج الثابتة). حدد القائمة "رسم >> تصدير ملف ثنائي (CTRL + ALT + S)".

كيفية إنشاء برامج لنظام Windows في Arduino

سيؤدي هذا إلى نسخ ملفين HEX إلى مجلد الرسم. نحن نأخذ الملف فقط بدون البادئة "with_bootloader.mega".

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

كيفية إنشاء برامج لنظام Windows في Arduino

وبالمثل ، يمكنك إنشاء برامج في بيئات أخرى ، مثل AVR Studio أو WinAVR.

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

شكرا لكم جميعا لاهتمامكم والبرمجة الجيدة!

المصدر: www.habr.com

إضافة تعليق