כיצד ליצור תוכניות עבור Windows ב- Arduino

כיצד ליצור תוכניות עבור Windows ב- Arduino

יום אחד היה לי רעיון מטורף להביא 500 מצביעי לייזר במקום אחד. ביליתי הרבה זמן ועשיתי את זה. זה יצא מרהיב וחסר תועלת, אבל אהבתי את זה. לפני שישה חודשים היה לי רעיון מטורף נוסף. הפעם, בכלל לא מרהיב, אבל הרבה יותר שימושי. גם אני השקעתי בזה הרבה זמן. ובמאמר הזה, אני מציג גרסת בטא של הרעיון המשוגע השני שלי.

התקשרתי לפרויקט Nanonyam (Nanonyam) ואפילו המצאתי לו לוגו (ציירתי במשך 5 דקות).

כיצד ליצור תוכניות עבור Windows ב- Arduino

למי שחושב במונחים של ארדואינו, אפשר לומר שננוניאם הוא מגן ארדואינו וירטואלי לשליטה בחלונות.

במילים אחרות, Nanonyam היא מכונה וירטואלית שמשתמשת בקושחה עבור המיקרו-בקר של הרסיבר (מומלץ ATMEGA2560) בתור ה-bytecode. בתוך המכונה הווירטואלית הזו יש סימולטור ליבה של AVR, אבל במקום ציוד היקפי, הממוקם בכתובות SRAM מ-0x0060 עד 0x01FF, יש ממשק מיוחד לפונקציות וירטואליות (כולל פונקציות Windows API). וכאן חשוב מאוד להבין מיד: לקוד של Nanonyam לא צריכה להיות כל גישה לטווח הזיכרון שצוין, כדי לא להתקשר בטעות, למשל, לפונקציה של מחיקת קבצים או פירמוט דיסק. שאר טווח זיכרון ה-SRAM בין 0x0200 ל-0xFFFF (זה יותר מאשר במיקרו-בקר אמיתי) זמין למשתמש לכל מטרה. אני מציין מיד שיש הגנה מיוחדת מפני השקה מקרית של הקושחה של מיקרו-בקר אמיתי (או קושחה מארכיטקטורה אחרת): לפני הפעלת פונקציות "מסוכנות", אתה צריך לקרוא לפונקציה וירטואלית מסובכת מיוחדת. יש גם כמה תכונות אבטחה אחרות.

כדי ליצור תוכניות עבור Nanonyam, עליך להשתמש בספריות מיוחדות המיישמות את כל הפונקציות הוירטואליות הזמינות כעת. הורד עבורה את המחשב הווירטואלי והספריות של Nanonyam לאחר מכן תוכל. אבל דף תיאור פונקציה וירטואלית. וכן, האתר שלי מאוד פרימיטיבי ולא מותאם למכשירים ניידים.

Nanonyam בחינם לשימוש ביתי ומסחרי. תכנית ננוניה ניתנת על בסיס "כמות שהיא". קוד המקור לא מסופק.

התוכנית נמצאת כעת בשלב בדיקות. הטמיע כ-200 פונקציות וירטואליות המאפשרות ליצור תוכנות פשוטות עבור Windows.
ברור שיצירת משהו מסובך במכונה וירטואלית כזו לא תעבוד, מכיוון שהזיכרון עבור הקוד הוא רק 256 קילובייט. ניתן לאחסן נתונים בקבצים נפרדים, המאגר עבור החלק הגרפי מיושם חיצונית. כל הפונקציות מפושטות ומותאמות לארכיטקטורת 8 סיביות.

מה אפשר לעשות בננוניאם? הגעתי לכמה בעיות.

פיתוח בלוקים של תוכניות

פעם הייתי צריך לעצב תפריט מורכב לתצוגה גרפית של 128x64 נקודות. ממש לא רציתי לטעון כל הזמן את הקושחה לתוך מיקרו-בקר אמיתי כדי לראות איך הפיקסלים נראים. וכך נולד הרעיון של ננוניה. האיור שלהלן מציג תמונה מתצוגת OLED אמיתית של אחד מהפריטים באותו תפריט. עכשיו אני יכול לעבוד על זה בלי מכשיר אמיתי.

כיצד ליצור תוכניות עבור Windows ב- Arduino

Nanonyam (ברעיון הסופי שלו) הוא כלי טוב לעיבוד בלוקים של תוכניות עבור מיקרו-בקרים, שכן יש פונקציות לעבודה עם גרפיקה (ניתן לדמות תצוגות ומחוונים), עם קבצים (אפשר ליצור יומנים, לקרוא נתוני בדיקה), עם מקלדת (ניתן לקרוא עד 10 לחצנים בו זמנית), עם יציאות COM (הנה פריט נפרד).

יצירת תוכניות מהירות

לדוגמה, עליך לעבד במהירות 100500 קבצי טקסט. כל אחד מהם צריך להיפתח, לשנות מעט לפי איזה אלגוריתם פשוט, לשמור ולסגור. אם אתה מאסטר פייתון, אז אני מברך אותך, יש לך הכל. אבל אם אתה ארדואינו מוקשה (ויש הרבה מהם), אז Nanonyam יעזור לך לפתור את הבעיה הזו. זו המטרה השנייה שלי בננוניה: להוסיף פונקציות שימושיות רבות כמו עיבוד טקסט, צילום מסך או הדמיית הקשות במערכת (שכולן, אגב, כבר קיימות), וכן פונקציות רבות אחרות לפתרון משימות שגרתיות .

בדיקת חומרה דרך יציאת COM

Nanonyam יכול לשמש כמסוף שעובד לפי האלגוריתם שלך. ניתן לצייר תפריט קטן כדי לשלוט במכשיר ולהציג את הנתונים שהתקבלו מהיציאה. אתה יכול לשמור ולקרוא נתונים מקבצים לניתוח. כלי שימושי עבור איתור באגים וכיול פשוטים של החומרה, כמו גם ליצירת לוחות בקרה וירטואליים פשוטים של מכשירים. עבור סטודנטים ומדענים צעירים, פרויקט זה יכול להיות שימושי מאוד.

הכשרת תכנות

עם זאת, כמו בכל פרויקט Arduino, התועלת העיקרית של Nanonyam טמונה בפישוט הפונקציות, הממשק ומטען האתחול. לכן, הפרויקט הזה צריך לעניין מתכנתים מתחילים וכאלה שמרוצים מרמת הארדואינו. אגב, אני בעצמי עדיין לא למדתי ארדואינו בפירוט, כי תמיד השתמשתי ב-WinAVR או ב-AVR Studio, אבל התחלתי עם assembler. לכן, התוכנית לדוגמה שלהלן תהיה קצת שגויה, אבל די עובדת.

שלום הבר!

זה הזמן להכיר כמה תכונות של Nanonyam ולכתוב תוכנית פשוטה. נכתוב בארדואינו, אבל לא בדרך הרגילה, אלא כמו שאני יכול עכשיו (כבר אמרתי שעדיין לא הבנתי טוב את הסביבה הזו). ראשית, צור סקיצה חדשה ובחר בלוח Mega2560.

כיצד ליצור תוכניות עבור Windows ב- Arduino

שמור את הסקיצה לקובץ והעתק את הבא ספריית ננוניה. זה יהיה נכון לכלול את הכותרות של הספריות, אבל אני לא יודע איך לכתוב קומפילציה של קבצים בודדים ב-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

עכשיו אתה צריך לקבל קובץ בינארי (קושחה). בחר את התפריט"Sketch>>יצוא קובץ בינארי (CTRL+ALT+S)".

כיצד ליצור תוכניות עבור Windows ב- Arduino

פעולה זו תעתיק שני קבצי HEX לתיקיית הסקיצות. אנחנו לוקחים רק את הקובץ ללא הקידומת "with_bootloader.mega".

ישנן מספר דרכים לציין קובץ HEX למחשב הוירטואלי Nanonyam, כולן מתוארות בדף זה. אני מציע ליצור ליד הקובץ Nanonyam.exe файл נָתִיב, שבו ניתן לרשום את הנתיב המלא לקובץ HEX שלנו. אחרי זה אתה יכול לרוץ Nanonyam.exe. אנחנו מקבלים חלון עם הכיתוב שלנו.

כיצד ליצור תוכניות עבור Windows ב- Arduino

באופן דומה, אתה יכול ליצור תוכניות בסביבות אחרות, כגון AVR Studio או WinAVR.

כאן אנחנו מסיימים את ההיכרות עם ננוניהם. הרעיון המרכזי צריך להיות ברור. דוגמאות נוספות נמצאות באתר.. אם יש מספיק אנשים שמוכנים להשתמש בפרויקט הזה, אז אני אעשה עוד דוגמאות ואמשיך "למלא" את ספריות הפונקציות הווירטואליות. רעיונות קונקרטיים לפיתוח הפרויקט ודיווחים על תקלות, באגים וטעויות מתקבלים. רצוי להפנות אותם לאנשי קשר, המצוין באתר. ודיון יתקבל בברכה בתגובות.

תודה לכולכם על תשומת הלב והתכנות הטובות!

מקור: www.habr.com

הוספת תגובה