Як рӯз ба ман фикри девонае пайдо шуд, ки биёрам
Ман лоиҳаро Nanonyam (Nanonyam) даъват кардам ва ҳатто барои он логотип таҳия кардам (ман 5 дақиқа кашидам).
Барои онҳое, ки дар бораи 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 яке аз ҷузъҳои ҳамон меню нишон дода шудааст. Акнун ман метавонам онро бе дастгоҳи воқеӣ кор кунам.
Наноням (дар идеяи ниҳоии худ) воситаи хубест барои коркарди блокҳои барномавӣ барои микроконтроллерҳо, зеро функсияҳои кор бо графика (шумо метавонед дисплейҳо ва нишондиҳандаҳоро тақлид кунед), бо файлҳо (шумо метавонед гузоришҳо созед, маълумоти санҷиширо хонед), бо клавиатура (шумо метавонед дар як вақт то 10 тугмаро хонед), бо портҳои COM (дар ин ҷо як ҷузъи алоҳида аст).
Эҷоди барномаҳои зуд
Масалан, шумо бояд файлҳои матнии 100500-ро зуд коркард кунед. Ҳар яки онҳо бояд кушода шаванд, мувофиқи алгоритми оддӣ каме тағир дода шаванд, захира ва пӯшида шаванд. Агар шумо устоди Python бошед, пас ман шуморо табрик мекунам, шумо ҳама чизро доред. Аммо агар шумо arduino сахтшуда бошед (ва бисёре аз онҳо вуҷуд доранд), пас Наноням ба шумо дар ҳалли ин мушкилот кӯмак мекунад. Ин ҳадафи дуюми ман дар Наноням аст: илова кардани бисёр функсияҳои муфид, аз қабили коркарди матн, гирифтани скриншотҳо ё тақлид кардани тугмаҳои клавиатура дар система (ҳамаи онҳо, дарвоқеъ, аллакай вуҷуд доранд) ва инчунин бисёр функсияҳои дигар барои ҳалли вазифаҳои муқаррарӣ .
Санҷиши сахтафзор тавассути порти COM
Наноням метавонад ҳамчун терминале амал кунад, ки мувофиқи алгоритми шумо кор мекунад. Шумо метавонед менюи хурдеро кашед, то дастгоҳро идора кунед ва маълумоти аз порт гирифташударо намоиш диҳед. Шумо метавонед маълумотро аз файлҳо барои таҳлил захира ва хонед. Асбоби қулай барои ислоҳи оддӣ ва калибровкаи сахтафзор, инчунин барои сохтани панелҳои оддии идоракунии асбобҳои виртуалӣ. Барои донишҷӯён ва олимони ҷавон ин лоиҳа метавонад хеле муфид бошад.
Омӯзиши барномасозӣ
Аммо, ба монанди тамоми лоиҳаи Arduino, фоидаи асосии Nanonyam дар содда кардани функсияҳо, интерфейс ва боркунак аст. Аз ин рӯ, ин лоиҳа бояд барои барномасозони навкор ва онҳое, ки аз сатҳи arduino қаноатманданд, ҷолиб бошанд. Дар омади гап, ман худам то ҳол arduino-ро муфассал наомухтаам, зеро ман ҳамеша аз WinAVR ё AVR Studio истифода мебурдам, аммо бо ассемблер оғоз кардам. Аз ин рӯ, барномаи мисоли дар поён овардашуда каме нодуруст хоҳад буд, аммо хеле кор мекунад.
Салом Хабр!
Вақти он расидааст, ки бо баъзе хусусиятҳои Наноням шинос шавед ва як барномаи оддӣ нависед. Мо дар Arduino менависем, аммо на ба таври муқаррарӣ, балки ба тавре ки ҳоло метавонам (ман аллакай гуфтам, ки ман ин муҳитро ҳанӯз хуб дарк накардаам). Аввалан, эскизи нав эҷод кунед ва тахтаи Mega2560-ро интихоб кунед.
Эскизро дар файл захира кунед ва баъдан нусхабардорӣ кунед
#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);//Задержка и разгрузка процессора
}
Бо ин барнома эскиз кунед
Мо тугмаи "Тафтиш" -ро пахш мекунем ва набояд ягон хатогӣ бошад.
Акнун ба шумо лозим аст, ки файли бинариро (прошивка) гиред. Менюро интихоб кунед "Эскиз>>Содироти файли дуӣ (CTRL+ALT+S)".
Ин ду файли HEX-ро ба ҷузвдони эскиз нусхабардорӣ мекунад. Мо танҳо файлро бидуни префикси "with_bootloader.mega" мегирем.
Якчанд роҳҳои муайян кардани файли HEX ба мошини виртуалии Nanonyam вуҷуд доранд, ки ҳамаи онҳо тавсиф шудаанд
Ба ҳамин монанд, шумо метавонед барномаҳоро дар дигар муҳитҳо, аз қабили AVR Studio ё WinAVR эҷод кунед.
Дар ин чо шиносойамонро бо Наноням ба охир мерасонем. Идеяи асосй бояд равшан бошад.
Ташаккур ба ҳама барои таваҷҷӯҳ ва барномасозии хуб!
Манбаъ: will.com