Kif toħloq programmi għall-Windows f'Arduino

Kif toħloq programmi għall-Windows f'Arduino

Ġurnata waħda kelli l-idea tal-ġenn li nġib 500 laser pointer f'post wieħed. Għamilt ħafna ħin u għamilt. Irriżulta spettakolari u inutli, imma għoġobni. Sitt xhur ilu kelli idea oħra tal-ġenn. Din id-darba, xejn spettakolari, iżda ħafna aktar utli. Jien ukoll qattajt ħafna ħin fuqha. U f'dan l-artikolu, nippreżenta verżjoni beta tat-tieni idea miġnun tiegħi.

Semmejt il-proġett Nanonyam (Nanonyam) u saħansitra ħriġt b'logo għalih (pinġejt għal 5 minuti).

Kif toħloq programmi għall-Windows f'Arduino

Għal dawk li jaħsbu f'termini ta 'Arduino, nistgħu ngħidu li Nanonyam huwa tarka Arduino virtwali għall-kontroll tal-Windows.

Fi kliem ieħor, Nanonyam hija magna virtwali li tuża l-firmware għall-mikrokontrollur AVR (ATMEGA2560 huwa rakkomandat) bħala l-bytecode. Ġewwa din il-magna virtwali hemm simulatur tal-qalba AVR, iżda minflok apparati periferali, li jinsabu f'indirizzi SRAM minn 0x0060 sa 0x01FF, hemm interface speċjali għal funzjonijiet virtwali (inklużi funzjonijiet API tal-Windows). U hawnhekk huwa importanti ħafna li wieħed jifhem minnufih: il-kodiċi għal Nanonyam m'għandux ikollu aċċess għall-firxa tal-memorja speċifikata, sabiex ma ssejjaħx aċċidentalment, pereżempju, il-funzjoni li tħassar fajls jew tifformattja disk. Il-bqija tal-firxa tal-memorja SRAM minn 0x0200 sa 0xFFFF (dan huwa aktar milli f'mikrokontrollur reali) huwa disponibbli għall-utent għal kwalunkwe skop. Ninnota mill-ewwel li hemm protezzjoni speċjali kontra t-tnedija aċċidentali tal-firmware ta 'mikrokontrollur reali (jew firmware minn arkitettura oħra): qabel ma tattiva funzjonijiet "perikolużi", trid issejjaħ funzjoni virtwali delikata speċjali. Hemm xi karatteristiċi ta 'sigurtà oħra wkoll.

Biex toħloq programmi għal Nanonyam, trid tuża libreriji speċjali li jimplimentaw il-funzjonijiet virtwali kollha disponibbli bħalissa. Niżżel il-magna virtwali Nanonyam u l-libreriji għaliha jista 'jkun hawn. Iżda l- paġna tad-deskrizzjoni tal-funzjoni virtwali. U iva, is-sit tiegħi huwa primittiv ħafna u mhux adattat għal apparat mobbli.

Nanonyam huwa b'xejn għall-użu domestiku u kummerċjali. Il-programm Nanonyam huwa pprovdut fuq bażi "kif inhu". Il-kodiċi tas-sors mhux ipprovdut.

Il-programm bħalissa jinsab fil-fażi tal-ittestjar. Implimentaw madwar 200 funzjoni virtwali li jippermettulek toħloq programmi sempliċi għall-Windows.
Ovvjament, il-ħolqien ta 'xi ħaġa kkumplikata f'magna virtwali bħal din mhux se taħdem, peress li l-memorja għall-kodiċi hija biss 256 kB. Id-dejta tista 'tinħażen f'fajls separati, il-buffer għall-parti grafika hija implimentata esternament. Il-funzjonijiet kollha huma ssimplifikati u adattati għall-arkitettura 8-bit.

X'tista' tagħmel f'Nanonyam? Ħriġt bi ftit problemi.

Żvilupp ta' blokki ta' programmi

Darba kelli bżonn niddisinja menu kumpless għal wirja grafika 128x64 dot. Verament ma ridtx tagħbija kontinwament il-firmware f'mikrokontrollur reali biex nara kif jidhru l-pixels. U għalhekk twieldet l-idea ta 'Nanonyam. Il-figura hawn taħt turi immaġni minn wirja OLED reali ta 'wieħed mill-oġġetti fuq l-istess menu. Issa nista' naħdem minnha mingħajr apparat reali.

Kif toħloq programmi għall-Windows f'Arduino

Nanonyam (fl-idea finali tiegħu) hija għodda tajba biex jinħadmu blokki tal-programmi għall-mikrokontrolluri, peress li hemm funzjonijiet biex taħdem bi grafika (tista 'tissimula wirjiet u indikaturi), b'fajls (tista' tagħmel zkuk, aqra data tat-test), b' tastiera (tista 'taqra sa 10 buttuni fl-istess ħin), bil-portijiet COM (hawn hija oġġett separat).

Ħolqien ta 'Programmi Quick

Pereżempju, għandek bżonn tipproċessa malajr 100500 fajl tat-test. Kull wieħed jeħtieġ li jinfetaħ, kemmxejn modifikat skond xi algoritmu sempliċi, salvati u magħluqa. Jekk inti kaptan ta 'Python, allura nifraħlek, għandek kollox. Imma jekk inti arduino mwebbsa (u hemm ħafna minnhom), allura Nanonyam jgħinek biex issolvi din il-problema. Dan huwa t-tieni għan tiegħi f'Nanonyam: li nżid ħafna funzjonijiet utli bħall-ipproċessar tat-test, teħid ta 'screenshots jew simulazzjoni ta' keystrokes fis-sistema (li kollha, mill-mod, diġà hemm), kif ukoll ħafna funzjonijiet oħra biex issolvi l-kompiti ta 'rutina .

Ittestjar tal-ħardwer permezz tal-port COM

Nanonyam jista 'jaġixxi bħala terminal li jaħdem skond l-algoritmu tiegħek. Tista 'tiġbed menu żgħir biex tikkontrolla l-apparat u turi d-dejta riċevuta mill-port. Tista 'tiffranka u taqra data minn fajls għall-analiżi. Għodda utli għad-debugging sempliċi u l-kalibrazzjoni tal-ħardwer, kif ukoll għall-ħolqien ta 'pannelli ta' kontroll ta 'strumenti virtwali sempliċi. Għal studenti u xjenzati żgħażagħ, dan il-proġett jista 'jkun utli ħafna.

Taħriġ ta' programmar

Madankollu, bħal fil-proġett kollu ta 'Arduino, l-utilità ewlenija ta' Nanonyam tinsab fis-simplifikazzjoni tal-funzjonijiet, interface u bootloader. Għalhekk, dan il-proġett għandu jkun ta 'interess għal programmaturi novizzi u dawk li huma sodisfatti bil-livell ta' arduino. Mill-mod, jien stess għadni ma studjajtx arduino fid-dettall, għax dejjem użajt WinAVR jew AVR Studio, iżda bdejt bl-assembler. Għalhekk, il-programm eżempju hawn taħt se jkun ftit ħażin, iżda pjuttost jaħdem.

Hello Habr!

Wasal iż-żmien li ssir familjari ma 'xi karatteristiċi ta' Nanonyam u tikteb programm sempliċi. Aħna se niktbu bl-Arduino, iżda mhux bil-mod tas-soltu, iżda bil-mod li nista 'issa (diġà għedt li dan l-ambjent għadu ma sibtx tajjeb ħafna). L-ewwel, oħloq skeċċ ġdid u agħżel il-bord Mega2560.

Kif toħloq programmi għall-Windows f'Arduino

Issejvja l-iskeċċ f'fajl u kkopja li jmiss Librerija Nanonyam. Ikun korrett li jiġu inklużi l-intestaturi tal-libreriji, imma ma nafx kif tikteb kumpilazzjoni ta 'fajls individwali f'Arduino, għalhekk għalissa ser ninkludi biss il-libreriji direttament (u kollha f'daqqa):

#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"

Ikun aktar korrett li jsir modulu speċjali "Nanonyam għal Arduino", li jista 'jiġi installat direttament minn Arduino. Hekk kif nifhem, nagħmilha, iżda għalissa qed nuri biss l-essenza ta 'ħidma ma' magna virtwali. Aħna niktbu l-kodiċi li ġej:

//Сразу после запуска рисуем текст в окне
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);//Задержка и разгрузка процессора
}

Skeċċ ma 'dan il-programm jista 'jitniżżel hawn. Deskrizzjoni dettaljata tal-funzjonijiet tfittxija fuq is-sit. Nittama li l-kummenti f'dan il-kodiċi huma biżżejjed biex nikseb il-qofol tiegħu. Hawnhekk il-funzjoni sys_Nanonyam() għandu r-rwol ta '"password" għall-magna virtwali, li tneħħi r-restrizzjonijiet fuq il-funzjonijiet virtwali. Mingħajr din il-funzjoni, il-programm se jagħlaq wara 3 sekondi ta 'tħaddim.

Aħna agħfas il-buttuna "Iċċekkja" u m'għandux ikun hemm żbalji.

Kif toħloq programmi għall-Windows f'Arduino

Issa għandek bżonn tikseb fajl binarju (firmware). Agħżel il-menu "Sketch>>Esporta fajl binarju (CTRL+ALT+S)".

Kif toħloq programmi għall-Windows f'Arduino

Dan se jikkopja żewġ fajls HEX fil-folder tal-iskeċċ. Nieħdu biss il-fajl mingħajr il-prefiss "with_bootloader.mega".

Hemm diversi modi kif tispeċifika fajl HEX għall-magna virtwali Nanonyam, kollha kemm huma deskritti f'din il-paġna. Nissuġġerixxi li toħloq ħdejn il-fajl Nanonyam.exe fajl mogħdija, li fiha tirreġistra t-triq sħiħa għall-fajl HEX tagħna. Wara li inti tista 'taħdem Nanonyam.exe. Ikollna tieqa bl-iskrizzjoni tagħna.

Kif toħloq programmi għall-Windows f'Arduino

Bl-istess mod, tista 'toħloq programmi f'ambjenti oħra, bħal AVR Studio jew WinAVR.

Dan huwa fejn nispiċċaw il-familjarità tagħna ma 'Nanonyam. L-idea prinċipali għandha tkun ċara. Aktar eżempji huma fuq il-websajt.. Jekk hemm biżżejjed nies lesti li jużaw dan il-proġett, allura nagħmel aktar eżempji u nkompli "imla" il-libreriji tal-funzjoni virtwali. Ideat konkreti għall-iżvilupp tal-proġett u rapporti ta 'ħsarat, bugs u bugs huma aċċettati. Huwa rakkomandabbli li tidderieġihom lejn kuntatti, indikat fuq is-sit. U d-diskussjoni hija milqugħa fil-kummenti.

Grazzi kollha għall-attenzjoni tagħkom u l-ipprogrammar tajjeb!

Sors: www.habr.com

Żid kumment