Rojekê fikra min a dîn bû ku ez bînim
Min navê projeyê Nanonyam (Nanonyam) kir û heta logoyek jê re hat (min 5 hûrdeman xêz kir).
Ji bo kesên ku di warê Arduino de difikirin, em dikarin bibêjin ku Nanonyam ji bo kontrolkirina Windows-ê mertalek Arduino ya virtual e.
Bi gotinek din, Nanonyam makîneyek virtual e ku firmware ji bo mîkrokontroller AVR (ATMEGA2560 tê pêşniyar kirin) wekî bytecode bikar tîne. Di hundurê vê makîneya virtual de simulatorek bingehîn a AVR-ê heye, lê li şûna cîhazên periferîkî, ku li navnîşanên SRAM-ê ji 0x0060 heya 0x01FF-ê ne, navgînek taybetî ya fonksiyonên virtual (tevî fonksiyonên API-ya Windows-ê) heye. Û li vir pir girîng e ku meriv tavilê fêm bike: koda Nanonyam divê negihîje qada bîranîna diyarkirî, da ku bi xeletî gazî neke, mînakî, fonksiyona jêbirina pelan an formatkirina dîskê. Rêzeya mayî ya bîranîna SRAM ji 0x0200 heya 0xFFFF (ev ji mîkrokontrolkerek rastîn bêtir e) ji bo her armancê ji bikarhêner re peyda dibe. Ez tavilê destnîşan dikim ku li dijî destpêkirina bêserûber a firmware-ya mîkrokontrolkerek rastîn (an firmware ji mîmariyek din) parastinek taybetî heye: berî ku fonksiyonên "xeterdar" çalak bikin, hûn hewce ne ku hûn fonksiyonek virtual ya xapînok bang bikin. Hin taybetmendiyên ewlehiyê yên din jî hene.
Ji bo afirandina bernameyan ji bo Nanonyam, hûn hewce ne ku pirtûkxaneyên taybetî bikar bînin ku hemî fonksiyonên virtual yên heyî bicîh dikin. Ji bo wê makîneya virtual û pirtûkxaneyên Nanonyam dakêşin
Nanonyam ji bo karanîna malê û bazirganî belaş e. Bernameya Nanonyam li ser bingehek "wek ku ye" tête peyda kirin. Koda çavkanî nayê peyda kirin.
Bername niha di qonaxa ceribandinê de ye. Nêzîkî 200 fonksiyonên virtual ku dihêle hûn ji bo Windows-ê bernameyên hêsan biafirînin bicîh kirine.
Eşkere ye, afirandina tiştek tevlihev di makîneyek wusa virtual de dê nexebite, ji ber ku bîranîna kodê tenê 256 kB ye. Daneyên dikarin di pelên cihêreng de werin hilanîn, tampon ji bo beşa grafîkî ji derve ve tête bicîh kirin. Hemî fonksiyon ji bo mîmariya 8-bit hêsan û adapteyî ne.
Hûn dikarin li Nanonyam çi bikin? Min çend pirsgirêk derketin.
Pêşxistina blokên bernameyê
Carekê min hewce kir ku ji bo pêşangehek grafîkî ya 128x64 xalek pêşekek tevlihev dîzayn bikim. Min bi rastî nexwest ku bi domdarî firmware-ê li mîkrokontrolkerek rastîn bar bikim da ku bibînim ka pixel çawa xuya dikin. Û vî awayî fikra Nanonyam çêbû. Nîgara jêrîn wêneyek ji dîmenderek OLED ya rastîn a yek ji hêmanên li ser heman menuyê nîşan dide. Naha ez dikarim bêyî amûrek rastîn bi wê re bixebitim.
Nanonyam (di ramana xwe ya dawîn de) amûrek baş e ji bo xebitandina blokên bernameyê ji bo mîkrokontrolkeran, ji ber ku fonksiyonên ji bo xebata bi grafîkê re hene (hûn dikarin dîmen û nîşanan simul bikin), bi pelan re (hûn dikarin qeydan çêbikin, daneyên testê bixwînin), bi klavyeyek (hûn dikarin di heman demê de heya 10 bişkokan bixwînin), bi portên COM (li vir babetek veqetandî ye).
Çêkirina Bernameyên Lezgîn
Mînakî, hûn hewce ne ku zû 100500 pelên nivîsê bişopînin. Pêdivî ye ku her yek were vekirin, li gorî hin algorîtmayên hêsan hinekî were guheztin, tomarkirin û girtin. Ger hûn masterê Python in, wê hingê ez we pîroz dikim, her tiştê we heye. Lê heke hûn arduinoyek hişk in (û gelek ji wan hene), wê hingê Nanonyam dê di çareserkirina vê pirsgirêkê de ji we re bibe alîkar. Ev armanca min a duyemîn e di Nanonyam de: zêdekirina gelek fonksiyonên bikêr ên wekî pêvajokirina nivîsê, kişandina dîmenan an simulkirina bişkojkên di pergalê de (yên ku, bi awayê, jixwe li wir in), û her weha gelek fonksiyonên din ji bo çareserkirina karên rûtîn. .
Testkirina hardware bi riya porta COM
Nanonyam dikare wekî termînalek ku li gorî algorîtmaya we dixebite tevbigere. Hûn dikarin menuyek piçûk bikişînin ku amûrê kontrol bikin û daneyên ku ji portê hatine wergirtin nîşan bidin. Hûn dikarin daneyan ji pelan ji bo analîzê hilînin û bixwînin. Amûrek bikêr ji bo debugkirin û kalibrasyona sade ya hardware, û her weha ji bo afirandina panelên kontrolê yên amûrên virtual yên hêsan. Ji bo xwendekar û zanyarên ciwan, ev proje dikare pir bikêr be.
perwerdeya Programming
Lêbelê, wekî tevahiya projeya Arduino, kêrhatiya sereke ya Nanonyam di hêsankirina fonksiyonan, navbeynkar û bootloader de ye. Ji ber vê yekê, divê ev proje ji bo bernamenûsên nûjen û yên ku ji asta arduino razî ne balkêş be. Bi awayê, min bixwe hîn jî bi hûrgulî arduino nexwendiye, ji ber ku min her gav WinAVR an AVR Studio bikar anî, lê bi assembler dest pê kir. Ji ber vê yekê, bernameya nimûneya jêrîn dê hinekî xelet be, lê pir kar dike.
Silav Habr!
Wext e ku hûn bi hin taybetmendiyên Nanonyam re nas bikin û bernameyek hêsan binivîsin. Em ê bi Arduino binivîsin, lê ne bi awayê adetî, lê bi awayê ku ez niha dikarim binivîsim (min berê jî got ku min hîna vê jîngehê pir baş fam nekiriye). Pêşîn, nexşeyek nû biafirînin û panelê Mega2560 hilbijêrin.
Skeçê li pelek hilînin û paşê kopî bikin
#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"
Dê hîn rasttir be ku meriv modulek taybetî "Nanonyam ji bo Arduino" çêbike, ku dikare rasterast ji Arduino were saz kirin. Hema ku ez wê fêhm bikim, ez ê wiya bikim, lê heya niha ez tenê cewhera xebata bi makîneyek virtual re nîşan didim. Em koda jêrîn dinivîsin:
//Сразу после запуска рисуем текст в окне
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);//Задержка и разгрузка процессора
}
Bi vê bernameyê re xêz bikin
Em pêl bişkoka "Check" dikin û divê tu xeletî nebe.
Naha hûn hewce ne ku pelek binary (firmware) bistînin. menu hilbijêre "Sketch>> Pelê binaryê derxe (CTRL+ALT+S)".
Ev ê du pelên HEX-ê li peldanka nexşeyê kopî bike. Em tenê pelê bêyî pêşgira "with_bootloader.mega" digirin.
Gelek away hene ku meriv pelek HEX-ê ji makîneya virtual Nanonyam re diyar bike, hemî jî têne diyar kirin
Bi heman rengî, hûn dikarin bernameyan li hawîrdorên din, wekî AVR Studio an WinAVR, biafirînin.
Li vir em hevnasîna xwe bi Nanonyam re diqedînin. Divê fikra sereke zelal be.
Spas ji bo bala we û bernameya we ya baş!
Source: www.habr.com