Чӣ тавр сохтани барномаҳо барои Windows дар Arduino

Чӣ тавр сохтани барномаҳо барои Windows дар Arduino

Як рӯз ба ман фикри девонае пайдо шуд, ки биёрам 500 нишондиҳандаҳои лазерӣ дар як ҷо. Ман вақти зиёд сарф кардам ва ин корро кардам. Он тамошобоб ва бефоида баромад, аммо ба ман писанд омад. Шаш моҳ пеш ман як фикри девонае доштам. Ин дафъа, на ҳама тамошобоб, балки хеле муфидтар. Ман ҳам вақти зиёдеро ба он сарф кардам. Ва дар ин мақола, ман версияи бета-и идеяи дуюми девонаамро пешниҳод мекунам.

Ман лоиҳаро Nanonyam (Nanonyam) даъват кардам ва ҳатто барои он логотип таҳия кардам (ман 5 дақиқа кашидам).

Чӣ тавр сохтани барномаҳо барои Windows дар Arduino

Барои онҳое, ки дар бораи Arduino фикр мекунанд, мо гуфта метавонем, ки Nanonyam як сипари виртуалии Arduino барои идоракунии Windows мебошад.

Ба ибораи дигар, Nanonyam як мошини маҷозӣ аст, ки нармафзори микроконтроллери AVR (ATMEGA2560 тавсия дода мешавад) ҳамчун байт код истифода мебарад. Дар дохили ин мошини виртуалӣ як симулятори асосии AVR мавҷуд аст, аммо ба ҷои дастгоҳҳои периферӣ, ки дар суроғаҳои SRAM аз 0x0060 то 0x01FF ҷойгиранд, интерфейси махсус барои вазифаҳои виртуалӣ (аз ҷумла функсияҳои Windows API) мавҷуд аст. Ва дар ин ҷо фавран фаҳмидан хеле муҳим аст: рамзи Наноням набояд ба диапазони хотираи муқарраршуда дастрасӣ дошта бошад, то тасодуфан, масалан, функсияи нест кардани файлҳо ё формат кардани дискро даъват накунад. Қисми боқимондаи хотираи SRAM аз 0x0200 то 0xFFFF (ин нисбат ба микроконтроллери воқеӣ зиёдтар аст) барои корбар барои ҳама гуна мақсад дастрас аст. Ман фавран қайд мекунам, ки муҳофизати махсус аз оғози тасодуфии нармафзори микроконтроллери воқеӣ (ё нармафзори аз меъмории дигар) мавҷуд аст: пеш аз фаъол кардани функсияҳои "хатарнок" шумо бояд функсияи махсуси виртуалии мураккабро даъват кунед. Баъзе хусусиятҳои дигари амниятӣ низ мавҷуданд.

Барои сохтани барномаҳо барои Nanonyam, шумо бояд китобхонаҳои махсусеро истифода баред, ки ҳама функсияҳои виртуалии мавҷударо амалӣ мекунанд. Мошини виртуалии Nanonyam ва китобхонаҳоро барои он зеркашӣ кунед метавонад дар ин ҷо бошад. Аммо саҳифаи тавсифи функсияи виртуалӣ. Ва ҳа, сайти ман хеле ибтидоӣ аст ва барои дастгоҳҳои мобилӣ мутобиқ карда нашудааст.

Nanonyam барои истифодаи хонагӣ ва тиҷоратӣ ройгон аст. Барномаи Наноням дар асоси "чунон ки ҳаст" таъмин карда мешавад. Рамзи манбаъ дода нашудааст.

Ҳоло барнома дар марҳилаи санҷиш қарор дорад. Тақрибан 200 функсияҳои виртуалӣ амалӣ карда шуданд, ки ба шумо имкон медиҳанд барномаҳои оддӣ барои Windows эҷод кунед.
Аён аст, ки дар чунин мошини виртуалӣ сохтани чизи мураккаб кор намекунад, зеро хотираи код ҳамагӣ 256 кБ аст. Маълумотро дар файлҳои алоҳида нигоҳ доштан мумкин аст, буфер барои қисми графикӣ берунӣ амалӣ карда мешавад. Ҳама функсияҳо содда ва барои меъмории 8-бит мутобиқ карда шудаанд.

Шумо дар Наноням чӣ кор карда метавонед? Ман бо якчанд мушкилот омадам.

Таҳияи блокҳои барномавӣ

Боре ба ман лозим буд, ки барои дисплейи графикии нуқта 128x64 менюи мураккаб таҳия кунам. Ман аслан намехостам, ки нармафзорро пайваста ба микроконтроллери воқеӣ бор кунам, то бубинам, ки пикселҳо чӣ гунаанд. Ва ҳамин тавр идеяи Наноням ба вуҷуд омад. Дар расми зер тасвир аз намоиши воқеии OLED яке аз ҷузъҳои ҳамон меню нишон дода шудааст. Акнун ман метавонам онро бе дастгоҳи воқеӣ кор кунам.

Чӣ тавр сохтани барномаҳо барои Windows дар Arduino

Наноням (дар идеяи ниҳоии худ) воситаи хубест барои коркарди блокҳои барномавӣ барои микроконтроллерҳо, зеро функсияҳои кор бо графика (шумо метавонед дисплейҳо ва нишондиҳандаҳоро тақлид кунед), бо файлҳо (шумо метавонед гузоришҳо созед, маълумоти санҷиширо хонед), бо клавиатура (шумо метавонед дар як вақт то 10 тугмаро хонед), бо портҳои COM (дар ин ҷо як ҷузъи алоҳида аст).

Эҷоди барномаҳои зуд

Масалан, шумо бояд файлҳои матнии 100500-ро зуд коркард кунед. Ҳар яки онҳо бояд кушода шаванд, мувофиқи алгоритми оддӣ каме тағир дода шаванд, захира ва пӯшида шаванд. Агар шумо устоди Python бошед, пас ман шуморо табрик мекунам, шумо ҳама чизро доред. Аммо агар шумо arduino сахтшуда бошед (ва бисёре аз онҳо вуҷуд доранд), пас Наноням ба шумо дар ҳалли ин мушкилот кӯмак мекунад. Ин ҳадафи дуюми ман дар Наноням аст: илова кардани бисёр функсияҳои муфид, аз қабили коркарди матн, гирифтани скриншотҳо ё тақлид кардани тугмаҳои клавиатура дар система (ҳамаи онҳо, дарвоқеъ, аллакай вуҷуд доранд) ва инчунин бисёр функсияҳои дигар барои ҳалли вазифаҳои муқаррарӣ .

Санҷиши сахтафзор тавассути порти COM

Наноням метавонад ҳамчун терминале амал кунад, ки мувофиқи алгоритми шумо кор мекунад. Шумо метавонед менюи хурдеро кашед, то дастгоҳро идора кунед ва маълумоти аз порт гирифташударо намоиш диҳед. Шумо метавонед маълумотро аз файлҳо барои таҳлил захира ва хонед. Асбоби қулай барои ислоҳи оддӣ ва калибровкаи сахтафзор, инчунин барои сохтани панелҳои оддии идоракунии асбобҳои виртуалӣ. Барои донишҷӯён ва олимони ҷавон ин лоиҳа метавонад хеле муфид бошад.

Омӯзиши барномасозӣ

Аммо, ба монанди тамоми лоиҳаи Arduino, фоидаи асосии Nanonyam дар содда кардани функсияҳо, интерфейс ва боркунак аст. Аз ин рӯ, ин лоиҳа бояд барои барномасозони навкор ва онҳое, ки аз сатҳи arduino қаноатманданд, ҷолиб бошанд. Дар омади гап, ман худам то ҳол arduino-ро муфассал наомухтаам, зеро ман ҳамеша аз WinAVR ё AVR Studio истифода мебурдам, аммо бо ассемблер оғоз кардам. Аз ин рӯ, барномаи мисоли дар поён овардашуда каме нодуруст хоҳад буд, аммо хеле кор мекунад.

Салом Хабр!

Вақти он расидааст, ки бо баъзе хусусиятҳои Наноням шинос шавед ва як барномаи оддӣ нависед. Мо дар Arduino менависем, аммо на ба таври муқаррарӣ, балки ба тавре ки ҳоло метавонам (ман аллакай гуфтам, ки ман ин муҳитро ҳанӯз хуб дарк накардаам). Аввалан, эскизи нав эҷод кунед ва тахтаи 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

Акнун ба шумо лозим аст, ки файли бинариро (прошивка) гиред. Менюро интихоб кунед "Эскиз>>Содироти файли дуӣ (CTRL+ALT+S)".

Чӣ тавр сохтани барномаҳо барои Windows дар Arduino

Ин ду файли HEX-ро ба ҷузвдони эскиз нусхабардорӣ мекунад. Мо танҳо файлро бидуни префикси "with_bootloader.mega" мегирем.

Якчанд роҳҳои муайян кардани файли HEX ба мошини виртуалии Nanonyam вуҷуд доранд, ки ҳамаи онҳо тавсиф шудаанд дар ин саҳифа. Ман пешниҳод мекунам, ки дар паҳлӯи файл эҷод кунед Nanonyam.exe файл роҳ, ки дар он роҳи пурраи файли HEX-и моро сабт кунед. Пас аз он шумо метавонед давед Nanonyam.exe. Мо тирезаеро бо навиштаҷоти худ мегирем.

Чӣ тавр сохтани барномаҳо барои Windows дар Arduino

Ба ҳамин монанд, шумо метавонед барномаҳоро дар дигар муҳитҳо, аз қабили AVR Studio ё WinAVR эҷод кунед.

Дар ин чо шиносойамонро бо Наноням ба охир мерасонем. Идеяи асосй бояд равшан бошад. Намунаҳои бештар дар вебсайт мавҷуданд.. Агар одамоне, ки мехоҳанд аз ин лоиҳа истифода баранд, кофӣ бошанд, ман мисолҳои бештар хоҳам овард ва ба "пур кардани" китобхонаҳои функсияҳои виртуалӣ идома медиҳам. Идеяхои конкретй оид ба тартиб додани лоиха ва хисобот дар бораи камбудихо, хатогихо ва хатохо кабул карда мешаванд. Тавсия дода мешавад, ки онҳоро ба тамосҳо равона кунед, дар сайт нишон дода шудааст. Ва баҳс дар шарҳҳо хуш омадед.

Ташаккур ба ҳама барои таваҷҷӯҳ ва барномасозии хуб!

Манбаъ: will.com

Илова Эзоҳ