Ki jan yo kreye pwogram pou Windows nan Arduino

Ki jan yo kreye pwogram pou Windows nan Arduino

Yon jou mwen te gen lide fou a pote 500 endikasyon lazè nan yon sèl kote. Mwen te pase anpil tan e mwen te fè li. Li te tounen espektakilè ak initil, men mwen te renmen li. Sis mwa de sa mwen te gen yon lòt lide fou. Fwa sa a, pa nan tout espektakilè, men pi plis itil. Mwen menm mwen te pase anpil tan sou li. Ak nan atik sa a, mwen prezante yon vèsyon beta nan dezyèm lide fou mwen an.

Mwen te rele pwojè a Nanonyam (Nanonyam) e menm te vini ak yon logo pou li (mwen te trase pou 5 minit).

Ki jan yo kreye pwogram pou Windows nan Arduino

Pou moun ki panse an tèm de Arduino, nou ka di ke Nanonyam se yon plak pwotèj Arduino vityèl pou kontwole Windows.

Nan lòt mo, Nanonyam se yon machin vityèl ki sèvi ak firmwèr pou mikrokontroleur AVR (ATMEGA2560 rekòmande) kòm bytecode la. Anndan machin vityèl sa a se yon similatè debaz AVR, men olye pou yo periferik, ki sitiye nan adrès SRAM soti nan 0x0060 a 0x01FF, gen yon koòdone espesyal nan fonksyon vityèl (ki gen ladan fonksyon Windows API). Ak isit la li trè enpòtan yo konprann touswit: kòd la pou Nanonyam pa ta dwe gen okenn aksè nan seri a memwa espesifye, se konsa yo pa aksidantèlman rele, pou egzanp, fonksyon an nan efase dosye oswa fòma yon disk. Rès la nan seri a memwa SRAM soti nan 0x0200 a 0xFFFF (sa a se pi plis pase nan yon mikrokontroleur reyèl) ki disponib nan itilizatè a pou nenpòt ki rezon. Mwen remake imedyatman ke gen yon pwoteksyon espesyal kont lansman aksidantèl nan firmwèr nan yon mikrokontroleur reyèl (oswa firmwèr soti nan yon lòt achitekti): anvan aktive fonksyon "danjere", ou bezwen rele yon espesyal fonksyon difisil vityèl. Gen kèk lòt karakteristik sekirite tou.

Pou kreye pwogram pou Nanonyam, ou bezwen sèvi ak bibliyotèk espesyal ki aplike tout fonksyon vityèl ki disponib kounye a. Telechaje machin vityèl Nanonyam ak bibliyotèk pou li ka isit la. Men, nan paj deskripsyon fonksyon vityèl. Epi wi, sit mwen an trè primitif epi li pa adapte pou aparèy mobil.

Nanonyam gratis pou itilizasyon kay ak komèsyal. Yo bay pwogram Nanonyam sou yon baz "tankou". Kòd sous yo pa bay.

Pwogram nan se kounye a nan faz tès la. Aplike sou 200 fonksyon vityèl ki pèmèt ou kreye pwogram senp pou Windows.
Li evidan, kreye yon bagay konplike nan tankou yon machin vityèl pa pral travay, depi memwa a pou kòd la se sèlman 256 kB. Done yo ka estoke nan dosye separe, tanpon pou pati grafik la aplike deyò. Tout fonksyon yo senplifye ak adapte pou achitekti 8-bit.

Kisa ou ka fè nan Nanonyam? Mwen te vini ak kèk pwoblèm.

Devlopman nan blòk pwogram yo

Yon fwa mwen te bezwen desine yon meni konplèks pou yon ekspozisyon grafik 128x64 pwen. Mwen reyèlman pa t 'vle toujou ap chaje firmwèr la nan yon mikrokontroleur reyèl yo wè ki jan piksèl yo gade. Se konsa lide Nanonyam te fèt. Figi ki anba a montre yon imaj ki soti nan yon ekspozisyon OLED reyèl nan youn nan atik ki nan menm meni an. Koulye a, mwen ka travay atravè li san yon aparèy reyèl.

Ki jan yo kreye pwogram pou Windows nan Arduino

Nanonyam (nan lide final li) se yon bon zouti pou travay blòk pwogram pou mikrokontwolè, paske gen fonksyon pou travay ak grafik (ou ka simulation ekspozisyon ak endikatè), ak dosye (ou ka fè mòso bwa, li done tès yo), ak yon klavye (ou ka li jiska 10 bouton an menm tan), ak pò COM (isit la se yon atik separe).

Kreye pwogram rapid

Pou egzanp, ou bezwen byen vit trete 100500 dosye tèks. Chak bezwen yo dwe louvri, yon ti kras modifye dapre kèk algorithm senp, sove epi fèmen. Si ou se yon mèt Python, Lè sa a, mwen felisite ou, ou gen tout bagay. Men, si ou se yon arduino fè tèt di toujou (e gen anpil nan yo), Lè sa a, Nanonyam pral ede w nan rezoud pwoblèm sa a. Sa a se dezyèm objektif mwen nan Nanonyam: ajoute anpil fonksyon itil tankou pwosesis tèks, pran Ekran oswa similye frap nan sistèm nan (tout sa yo, nan chemen an, yo deja la), osi byen ke anpil lòt fonksyon pou rezoud travay woutin. .

Tès pyès ki nan konpitè atravè pò COM

Nanonyam ka aji kòm yon tèminal ki travay selon algorithm ou. Ou ka trase yon ti meni pou kontwole aparèy la epi montre done yo resevwa nan pò a. Ou ka sove epi li done ki sòti nan dosye pou analiz. Yon zouti sou la men pou senp debogaj ak kalibrasyon pyès ki nan konpitè, osi byen ke pou kreye senp panno kontwòl enstriman vityèl. Pou etidyan ak jèn syantis, pwojè sa a ka trè itil.

Fòmasyon pwogramasyon

Sepandan, menm jan ak tout pwojè Arduino a, itilite prensipal la nan Nanonyam se nan senplifikasyon nan fonksyon, koòdone ak bootloader. Se poutèt sa, pwojè sa a ta dwe nan enterè pwogramasyon inisyasyon ak moun ki satisfè ak nivo a nan arduino. By wout la, mwen menm mwen toujou pa te etidye arduino an detay, paske mwen te toujou itilize WinAVR oswa AVR Studio, men mwen te kòmanse ak assembler. Se poutèt sa, pwogram egzanp ki anba a pral yon ti kras mal, men byen travay.

Bonjou Habr!

Li lè pou w abitye ak kèk karakteristik Nanonyam epi ekri yon pwogram ki senp. Nou pral ekri nan Arduino, men se pa nan fason nòmal la, men nan fason mwen kapab kounye a (mwen te deja di ke mwen poko kalkile anviwònman sa a trè byen). Premyèman, kreye yon nouvo desen epi chwazi tablo Mega2560 la.

Ki jan yo kreye pwogram pou Windows nan Arduino

Sove desen an nan yon fichye epi kopye annapre Nanonyam bibliyotèk. Li ta kòrèk pou mete tèt yo nan bibliyotèk yo, men mwen pa konnen ki jan yo ekri konpilasyon nan dosye endividyèl nan Arduino, kidonk pou kounye a nou pral jis enkli bibliyotèk yo dirèkteman (ak tout nan yon fwa):

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

Li ta menm pi kòrèk pou fè yon modil espesyal "Nanonyam pou Arduino", ki ka enstale dirèkteman nan Arduino. Le pli vit ke mwen kalkile li soti, mwen pral fè li, men pou kounye a mwen jis montre sans nan travay ak yon machin vityèl. Nou ekri kòd sa a:

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

Fè desen ak pwogram sa a ka telechaje isit la. Deskripsyon detaye sou fonksyon yo rechèch sou sit la. Mwen espere kòmantè yo nan kòd sa a ase yo jwenn esansyèl la nan li. Isit la fonksyon sys_Nanonyam() jwe wòl yon "modpas" pou machin vityèl la, ki retire restriksyon sou fonksyon vityèl. San fonksyon sa a, pwogram nan ap fèmen apre 3 segonn nan operasyon.

Nou peze bouton an "Tcheke" epi pa ta dwe gen okenn erè.

Ki jan yo kreye pwogram pou Windows nan Arduino

Koulye a, ou bezwen jwenn yon dosye binè (firmware). Chwazi meni an "Trase>> Ekspòte dosye binè (CTRL + ALT + S)".

Ki jan yo kreye pwogram pou Windows nan Arduino

Sa a pral kopye de dosye HEX nan katab la trase. Nou pran sèlman fichye a san prefiks "with_bootloader.mega".

Gen plizyè fason pou presize yon fichye HEX nan machin vityèl Nanonyam, yo tout dekri sou paj sa a. Mwen sijere pou kreye akote fichye a Nanonyam.exe файл chemen, nan ki anrejistre chemen an konplè nan dosye HEX nou an. Apre sa ou ka kouri Nanonyam.exe. Nou jwenn yon fenèt ak inscription nou an.

Ki jan yo kreye pwogram pou Windows nan Arduino

Menm jan an tou, ou ka kreye pwogram nan lòt anviwònman, tankou AVR Studio oswa WinAVR.

Se la nou fini konesans nou ak Nanonyam. Lide prensipal la ta dwe klè. Gen plis egzanp sou sit entènèt la.. Si gen ase moun ki vle sèvi ak pwojè sa a, Lè sa a, mwen pral fè plis egzanp epi kontinye "ranpli" bibliyotèk yo fonksyon vityèl. Lide konkrè pou devlopman pwojè a ak rapò sou fonksyone byen, pinèz ak pinèz yo aksepte. Li rekòmande pou dirije yo nan kontak, endike sou sit entènèt la. Ak diskisyon se akeyi nan kòmantè yo.

Mèsi tout pou atansyon nou ak bon pwogramasyon!

Sous: www.habr.com

Add nouvo kòmantè