Ungazakha kanjani izinhlelo zeWindows ku-Arduino

Ungazakha kanjani izinhlelo zeWindows ku-Arduino

Ngolunye usuku ngaba nombono ongasile wokuletha 500 izikhombi laser endaweni eyodwa. Ngichithe isikhathi esiningi futhi ngikwenzile. Kwavela umbukwane futhi engenamsebenzi, kodwa ngakuthanda. Ezinyangeni eziyisithupha ezedlule ngaba nomunye umqondo ongasile. Lesi sikhathi, hhayi neze umbukwane, kodwa ewusizo kakhulu. Nami ngichithe isikhathi esiningi kukho. Futhi kulesi sihloko, ngethula inguqulo ye-beta yombono wami wesibili wokuhlanya.

Ngibize iphrojekthi ngokuthi iNanonyam (Nanonyam) futhi ngaze ngaqhamuka nelogo yayo (ngidwebe imizuzu emi-5).

Ungazakha kanjani izinhlelo zeWindows ku-Arduino

Kulabo abacabanga ngokwe-Arduino, singasho ukuthi iNanonyam iyisihlangu se-Arduino esibonakalayo sokulawula iWindows.

Ngamanye amazwi, i-Nanonyam iwumshini obonakalayo osebenzisa i-firmware ye-AVR microcontroller (kunconywa i-ATMEGA2560) njengebhayithikhodi. Ngaphakathi kwalo mshini we-virtual kunesifanisi esiwumgogodla we-AVR, kodwa esikhundleni samadivayisi aseduze, atholakala kumakheli e-SRAM ukusuka ku-0x0060 kuya ku-0x01FF, kukhona ukusebenzelana okukhethekile kwemisebenzi ebonakalayo (kuhlanganise nemisebenzi ye-Windows API). Futhi lapha kubaluleke kakhulu ukuqonda ngokushesha: ikhodi ye-Nanonyam akufanele ibe nokufinyelela ebangeni lememori elicacisiwe, ukuze ungabizi ngephutha, isibonelo, umsebenzi wokususa amafayela noma ukufometha idiski. Olunye uhla lwenkumbulo ye-SRAM lusuka ku-0x0200 luye ku-0xFFFF (lokhu kungaphezu kwesilawuli esincane sangempela) luyatholakala kumsebenzisi nganoma iyiphi injongo. Ngiyaqaphela ngaso leso sikhathi ukuthi kukhona ukuvikelwa okukhethekile ekuqalisweni ngengozi kwe-firmware ye-microcontroller yangempela (noma i-firmware evela kwenye i-architecture): ngaphambi kokuvula imisebenzi "eyingozi", udinga ukubiza umsebenzi okhethekile okhohlisayo. Kukhona nezinye izici zokuphepha futhi.

Ukuze udale izinhlelo ze-Nanonyam, udinga ukusebenzisa imitapo yolwazi ekhethekile esebenzisa yonke imisebenzi etholakalayo njengamanje. Landa umshini obonakalayo we-Nanonyam nemitapo yolwazi yawo kungaba lapha. Futhi lapha ikhasi lencazelo yomsebenzi we-virtual. Futhi yebo, isayithi lami lidala kakhulu futhi alilungiselelwanga amadivaysi eselula.

I-Nanonyam imahhala ukusetshenziswa kwasekhaya nezokuhweba. Uhlelo lweNanonyam luhlinzekwa β€œnjengoba lunjalo”. Ikhodi yomthombo ayinikeziwe.

Njengamanje lolu hlelo lusesigabeni sokuhlola. Kwenziwa imisebenzi ebonakalayo engama-200 ekuvumela ukuthi udale izinhlelo ezilula zeWindows.
Ngokusobala, ukudala into eyinkimbinkimbi emshinini onjalo ngeke kusebenze, ngoba inkumbulo yekhodi ingu-256 kB kuphela. Idatha ingagcinwa kumafayela ahlukene, isilondolozi sengxenye yesithombe sisetshenziswa ngaphandle. Yonke imisebenzi yenziwe yaba lula futhi iguqulelwe ku-8-bit architecture.

Yini ongayenza eNanonyam? Ngiqhamuke nezinkinga ezimbalwa.

Ukuthuthukiswa kwamabhulokhi wohlelo

Ngake ngadinga ukuklama imenyu eyinkimbinkimbi yesibonisi sesithombe samachashazi angu-128x64. Bengingafuni ngempela ukulayisha i-firmware ku-microcontroller yangempela ukuze ngibone ukuthi amaphikseli abukeka kanjani. Futhi kanjalo umqondo kaNanonyam wazalwa. Isithombe esingezansi sibonisa isithombe esivela kusibonisi sangempela se-OLED senye yezinto ezikumenyu efanayo. Manje sengingakwazi ukusebenza ngaphandle kwedivayisi yangempela.

Ungazakha kanjani izinhlelo zeWindows ku-Arduino

I-Nanonyam (emcabangweni wayo wokugcina) iyithuluzi elihle lokusebenzela amabhlogo wezinhlelo zama-microcontrollers, njengoba kunemisebenzi yokusebenza ngehluzo (ungakwazi ukulingisa izibonisi nezinkomba), ngamafayela (ungenza izingodo, ufunde idatha yokuhlola), nge ikhibhodi (ungafunda izinkinobho ezifika kweziyi-10 ngesikhathi esisodwa), ngezimbobo ze-COM (nansi into ehlukile).

Ukudala Izinhlelo Ezisheshayo

Isibonelo, udinga ukucubungula ngokushesha amafayela ombhalo angu-100500. Ngayinye idinga ukuvulwa, ishintshwe kancane ngokuya nge-algorithm ethile elula, igcinwe futhi ivalwe. Uma ungumphathi wePython, ngiyakuhalalisela, unakho konke. Kodwa uma uyi-arduino eqinile (futhi kukhona abaningi babo), khona-ke uNanonyam uzokusiza ekuxazululeni le nkinga. Lona umgomo wami wesibili ku-Nanonyam: ukwengeza imisebenzi eminingi ewusizo njengokucutshungulwa kombhalo, ukuthatha izithombe-skrini noma ukulingisa izinkinobho zokhiye ohlelweni (konke lokhu, ngendlela, sekuvele kukhona), kanye neminye imisebenzi eminingi yokuxazulula imisebenzi evamile. .

Ihlola izingxenyekazi zekhompyutha ngembobo ye-COM

I-Nanonyam ingasebenza njengetheminali esebenza ngokuya nge-algorithm yakho. Ungadweba imenyu encane ukuze ulawule idivayisi futhi ubonise idatha etholwe echwebeni. Ungagcina futhi ufunde idatha kumafayela ukuze ihlaziywe. Ithuluzi eliwusizo lokulungisa iphutha nokulinganiswa kwehadiwe, kanye nokudala amaphaneli alula okulawula insimbi ebonakalayo. Kubafundi nososayensi abasebasha, le phrojekthi ingaba wusizo kakhulu.

Ukuqeqeshwa kokuhlela

Kodwa-ke, njengakuyo yonke iphrojekthi ye-Arduino, usizo oluyinhloko lwe-Nanonyam lusekwenzeni imisebenzi ibe lula, isixhumi esibonakalayo kanye ne-bootloader. Ngakho-ke, le phrojekthi kufanele ibe nesithakazelo kubahleli bezinhlelo ze-novice nalabo abanelisekile ngezinga le-arduino. Ngendlela, mina ngokwami ​​​​namanje angizange ngifunde i-arduino ngokuningiliziwe, ngoba ngangihlala ngisebenzisa i-WinAVR noma i-AVR Studio, kodwa ngaqala nge-assembler. Ngakho-ke, uhlelo olungezansi luzoba nephutha kancane, kodwa lusebenza kakhulu.

Sawubona Habr!

Isikhathi sokujwayela ezinye izici ze-Nanonyam futhi ubhale uhlelo olulula. Sizobhala ku-Arduino, kodwa hhayi ngendlela evamile, kodwa ngendlela engingakwazi ngayo manje (sengishilo kakade ukuthi angizange ngicabange kahle le ndawo okwamanje). Okokuqala, dala umdwebo omusha bese ukhetha ibhodi le-Mega2560.

Ungazakha kanjani izinhlelo zeWindows ku-Arduino

Londoloza umdwebo efayelini bese ukopisha ngokulandelayo Umtapo wezincwadi weNanonyam. Kungaba okulungile ukufaka izihloko zemitapo yolwazi, kodwa angazi ukuthi ngingabhala kanjani ukuhlanganiswa kwamafayela ngamanye ku-Arduino, ngakho-ke okwamanje sizofaka imitapo yolwazi ngokuqondile (futhi konke ngesikhathi esisodwa):

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

Kungaba okulungile nakakhulu ukwenza imojuli ekhethekile "Nanonyam ye-Arduino", engafakwa ngokuqondile ku-Arduino. Lapho nje sengikutholile, ngizokwenza, kodwa okwamanje ngibonisa ingqikithi yokusebenza ngomshini obonakalayo. Sibhala ikhodi elandelayo:

//Π‘Ρ€Π°Π·Ρƒ послС запуска рисуСм тСкст Π² ΠΎΠΊΠ½Π΅
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);//Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈ Ρ€Π°Π·Π³Ρ€ΡƒΠ·ΠΊΠ° процСссора
}

Sketch ngalolu hlelo ingalandwa lapha. Incazelo enemininingwane yemisebenzi sesha kusayithi. Ngethemba ukuthi amazwana akule khodi anele ukuthola ingqikithi yayo. Lapha umsebenzi sys_Nanonyam() idlala indima "yephasiwedi" yomshini obonakalayo, osusa imikhawulo emisebenzini ebonakalayo. Ngaphandle kwalo msebenzi, uhlelo luzovala ngemva kwamasekhondi angu-3 okusebenza.

Sicindezela inkinobho ethi "Hlola" futhi akufanele kube namaphutha.

Ungazakha kanjani izinhlelo zeWindows ku-Arduino

Manje udinga ukuthola ifayela kanambambili (i-firmware). Khetha imenyu "Sketch>>Khipha ifayela kanambambili (CTRL+ALT+S)".

Ungazakha kanjani izinhlelo zeWindows ku-Arduino

Lokhu kuzokopisha amafayela amabili e-HEX kufolda yomdwebo. Sithatha ifayela kuphela ngaphandle kwesiqalo "with_bootloader.mega".

Kunezindlela ezimbalwa zokucacisa ifayela le-HEX emshinini we-Nanonyam virtual, zonke zichazwe kuleli khasi. Ngiphakamisa ukuthi udale eduze kwefayela Nanonyam.exe ifayela indlela, lapho uzobhalisa khona indlela ephelele yefayela lethu le-HEX. Ngemuva kwalokho ungagijima Nanonyam.exe. Sithola iwindi elinombhalo wethu.

Ungazakha kanjani izinhlelo zeWindows ku-Arduino

Ngokufanayo, ungakha izinhlelo kwezinye izindawo, njenge-AVR Studio noma i-WinAVR.

Yilapho siqeda khona ukwazana noNanonyam. Umqondo oyinhloko kufanele ucace. Izibonelo ezengeziwe zikuwebhusayithi.. Uma kunabantu abanele abazimisele ukusebenzisa le phrojekthi, ngizokwenza izibonelo eziningi futhi ngiqhubeke "nokugcwalisa" imitapo yolwazi esebenzayo. Imibono ebambekayo yokuthuthukiswa kwephrojekthi kanye nemibiko yokungasebenzi kahle, izimbungulu nezimbungulu iyamukelwa. Kutuswa ukubaqondisa koxhumana nabo, kuboniswe esizeni. Futhi ingxoxo yamukelekile kumazwana.

Siyabonga nonke ngokunaka kwenu kanye nezinhlelo ezinhle!

Source: www.habr.com

Engeza amazwana