Meriv çawa di Arduino de ji bo Windows-ê bernameyan diafirîne

Meriv çawa di Arduino de ji bo Windows-ê bernameyan diafirîne

Rojekê fikra min a dîn bû ku ez bînim 500 nîşankerên lazer li yek cîhek. Min gelek wext derbas kir û kir. Ew balkêş û bêkêr derket, lê min jê hez kir. Şeş meh berê min fikrek din a dîn bû. Vê carê, qet ne balkêş, lê pir bikêrtir e. Min jî gelek wext li ser xerc kir. Û di vê gotarê de, ez guhertoyek beta ya ramana xweya duyemîn a dîn pêşkêşî dikim.

Min navê projeyê Nanonyam (Nanonyam) kir û heta logoyek jê re hat (min 5 hûrdeman xêz kir).

Meriv çawa di Arduino de ji bo Windows-ê bernameyan diafirîne

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 dikare li vir be. Û vir rûpel description function virtual. Erê, malpera min pir primitive e û ji bo cîhazên mobîl nayê adaptekirin.

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.

Meriv çawa di Arduino de ji bo Windows-ê bernameyan diafirîne

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.

Meriv çawa di Arduino de ji bo Windows-ê bernameyan diafirîne

Skeçê li pelek hilînin û paşê kopî bikin Pirtûkxaneya Nanonyam. Dê rast be ku meriv sernavên pirtûkxaneyan têxe nav xwe, lê ez nizanim meriv çawa berhevkirina pelên kesane li Arduino binivîsim, ji ber vê yekê heya nuha em ê rasterast pirtûkxaneyan (û bi yekcarî) têxin nav xwe:

#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 dikare li vir were daxistin. Danasîna berfireh a fonksiyonan li ser malperê bigerin. Ez hêvî dikim ku şîroveyên di vê kodê de têra xwe bikin ku têgihîştina wê. Li vir fonksiyonê dike sys_Nanonyam() Ji bo makîneya virtual rola "şîfreyek" dilîze, ku qedexeyên li ser fonksiyonên virtual radike. Bêyî vê fonksiyonê, bername dê piştî xebitandinê 3 saniyeyan bigire.

Em pêl bişkoka "Check" dikin û divê tu xeletî nebe.

Meriv çawa di Arduino de ji bo Windows-ê bernameyan diafirîne

Naha hûn hewce ne ku pelek binary (firmware) bistînin. menu hilbijêre "Sketch>> Pelê binaryê derxe (CTRL+ALT+S)".

Meriv çawa di Arduino de ji bo Windows-ê bernameyan diafirîne

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 ser vê rûpelê. Ez pêşniyar dikim ku li kêleka pelê biafirînin Nanonyam.exe pelê şop, ku tê de rêça tevahî ya pelê meya HEX tomar bike. Piştî ku hûn dikarin birevin Nanonyam.exe. Em pencereyek bi nivîsa xwe digirin.

Meriv çawa di Arduino de ji bo Windows-ê bernameyan diafirîne

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. Nimûneyên bêtir li ser malperê hene.. Ger têra mirovên ku dixwazin vê projeyê bikar bînin hebin, wê hingê ez ê bêtir mînakan çêkim û "dagirtina" pirtûkxaneyên fonksiyonên virtual bidomînim. Ji bo pêşkeftina projeyê û raporên xeletî, xeletî û xeletiyan ramanên berbiçav têne pejirandin. Tête pêşniyar kirin ku wan rêve bibin têkiliyan, li ser malperê destnîşan kirin. Û nîqaş di şîroveyan de bi xêr hatî.

Spas ji bo bala we û bernameya we ya baş!

Source: www.habr.com

Add a comment