Uzenza njani iinkqubo zeWindows kwiArduino

Uzenza njani iinkqubo zeWindows kwiArduino

Ngenye imini ndaba nembono ephambeneyo ukuba ndize nayo Izikhombisi ze-laser ezingama-500 kwindawo enye. Ndichithe ixesha elininzi ndayenza. Ibonakale inomtsalane kwaye ingenamsebenzi, kodwa ndiyithandile. Kwiinyanga ezintandathu ezidlulileyo ndaba nenye imbono ephambeneyo. Ngeli xesha, ayisiyonto inomtsalane, kodwa iluncedo kakhulu. Kwakhona ndachitha ixesha elininzi kuyo. Kwaye kweli nqaku, ndibonisa inguqulelo ye-beta yombono wam wesibini ophambeneyo.

Ndibize iprojekthi ethi Nanonyam (Nanonyam) ndaze ndaza nelogo yayo (ndizobile imizuzu emi-5).

Uzenza njani iinkqubo zeWindows kwiArduino

Kwabo bacinga ngokweArduino, sinokuthi iNanonyam sisikhuselo seArduino esibonakalayo sokulawula iiWindows.

Ngamanye amazwi, uNanonyam ngumatshini obonakalayo osebenzisa i-firmware ye-AVR microcontroller (i-ATMEGA2560 iyanconywa) njenge-bytecode. Ngaphakathi lo matshini wenyani yi-simulator engundoqo ye-AVR, kodwa endaweni yezixhobo ze-peripheral, ezifumaneka kwiidilesi ze-SRAM ukusuka kwi-0x0060 ukuya kwi-0x01FF, kukho ujongano olukhethekileyo kwimisebenzi ebonakalayo (kubandakanywa nemisebenzi ye-Windows API). Kwaye apha kubaluleke kakhulu ukuqonda ngokukhawuleza: ikhowudi ye-Nanonyam akufanele ibe naluphi na ukufikelela kuluhlu lwememori oluchaziweyo, ukwenzela ukuba ungabizi ngengozi, umzekelo, umsebenzi wokucima iifayile okanye ukufomatha idiski. Uluhlu oluseleyo lwememori ye-SRAM ukusuka kwi-0x0200 ukuya kwi-0xFFFF (oku kungaphezulu kwe-microcontroller yangempela) iyafumaneka kumsebenzisi ngayo nayiphi na injongo. Ndiqaphela kwangoko ukuba kukho ukhuseleko olukhethekileyo malunga nokuqaliswa ngengozi kwe-firmware ye-microcontroller yokwenyani (okanye i-firmware esuka kwelinye i-architecture): ngaphambi kokuba usebenze "ingozi" imisebenzi, kufuneka ubize umsebenzi okhethekileyo okhohlisayo. Kukho ezinye iimpawu zokhuseleko ngokunjalo.

Ukwenza iinkqubo zeNanonyam, kufuneka usebenzise amathala eencwadi akhethekileyo aphumeza yonke imisebenzi ekhoyo ekhoyo ngoku. Khuphela umatshini obonakalayo weNanonyam kunye neelayibrari zawo ingaba ulapha. Kwaye apha iphepha lenkcazo yomsebenzi wenyani. Kwaye ewe, indawo yam yeyokuqala kwaye ayilungiselelwanga izixhobo eziphathwayo.

INanonyam isimahla kusetyenziso lwasekhaya kunye norhwebo. Iprogram yeNanonyam ibonelelwa ngokwesiseko "njengoko injalo". Ikhowudi yomthombo ayibonelelwanga.

Inkqubo ngoku ikwinqanaba lovavanyo. Yenziwe malunga nama-200 emisebenzi ebonakalayo ekuvumela ukuba wenze iinkqubo ezilula zeWindows.
Ngokucacileyo, ukwenza into enzima kumatshini onjalo akuyi kusebenza, kuba imemori yekhowudi i-256 kB kuphela. Idatha inokugcinwa kwiifayile ezahlukeneyo, i-buffer yecandelo lomzobo iphunyezwe ngaphandle. Yonke imisebenzi yenziwe lula kwaye ilungiselelwe i-8-bit ye-architecture.

Ungenza ntoni eNanonyam? Ndize neengxaki ezimbalwa.

Ukuphuhliswa kweebhloko zeprogram

Ndakhe ndadinga ukuyila imenyu entsonkothileyo yomboniso wamachaphaza angama-128x64. Andizange ndifune ukuhlala ndilayisha i-firmware kwi-microcontroller yokwenyani ukuze ndibone ukuba iipixels zijongeka njani. Kwaye ke umbono kaNanonyam wazalwa. Umfanekiso ongezantsi ubonisa umfanekiso ovela kumboniso we-OLED wokwenyani wenye yezinto ezikwimenyu enye. Ngoku ndiyakwazi ukusebenza kuyo ngaphandle kwesixhobo sokwenyani.

Uzenza njani iinkqubo zeWindows kwiArduino

I-Nanonyam (kwingcamango yayo yokugqibela) sisixhobo esilungileyo sokusebenza iibhloko zeprogram ze-microcontrollers, njengoko kukho imisebenzi yokusebenza kunye nemizobo (ungakwazi ukulinganisa imiboniso kunye nezibonakaliso), kunye neefayile (unokwenza iilogi, ufunde idatha yovavanyo), kunye ibhodi yezitshixo (unokufunda ukuya kutsho kwi-10 amaqhosha ngexesha elinye), kunye namazibuko e-COM (nantsi into eyahlukileyo).

Ukwenza iiNkqubo eziKhawulezayo

Ngokomzekelo, kufuneka usebenze ngokukhawuleza iifayile ze-text ze-100500. Nganye kufuneka ivulwe, iguqulwe kancinane ngokwe-algorithm elula, igcinwe kwaye ivaliwe. Ukuba uyinkosi yePython, ke ndiyavuyisana nawe, unayo yonke into. Kodwa ukuba uyi-arduino eqinile (kwaye zininzi zazo), ke uNanonyam uya kukunceda ekusombululeni le ngxaki. Le yinjongo yam yesibini kwiNanonyam: ukongeza imisebenzi emininzi eluncedo njengokulungiswa kokubhaliweyo, ukuthatha imifanekiso-skrini okanye ukulinganisa izitshixo kwinkqubo (zonke ezo, ngendlela, sele zikhona), kunye neminye imisebenzi emininzi yokusombulula imisebenzi yesiqhelo. .

Uvavanyo lwehardware nge-COM port

I-Nanonyam inokusebenza njenge-terminal esebenza ngokwe-algorithm yakho. Ungazoba imenyu encinci ukulawula isixhobo kwaye ubonise idatha efunyenwe kwizibuko. Ungagcina kwaye ufunde idatha kwiifayile zohlalutyo. Isixhobo esisebenzayo solungiso olulula kunye nolungelelwaniso lwehardware, kunye nokudala iiphaneli zolawulo lwesixhobo esilula. Kubafundi kunye noososayensi abancinci, le projekthi inokuba luncedo kakhulu.

Uqeqesho lokucwangcisa

Nangona kunjalo, njengayo yonke iprojekthi yeArduino, olona ncedo luphambili lweNanonyam ilele ekwenziweni lula kwemisebenzi, ujongano kunye ne-bootloader. Ngoko ke, le projekthi kufuneka ibe nomdla kubaprogram be-novice kunye nabo banelisekile kwinqanaba le-arduino. Ngendlela, mna ngokwam andizange ndifunde i-arduino ngokweenkcukacha, kuba ndandihlala ndisebenzisa iWinAVR okanye i-AVR Studio, kodwa ndaqala nge-assembler. Ke ngoko, inkqubo yomzekelo engezantsi iya kuba yimpazamo encinci, kodwa isebenza kakhulu.

Molo Habr!

Lixesha lokuba uqhelane nezinye iimpawu zikaNanonyam kwaye ubhale inkqubo elula. Siza kubhala kwi-Arduino, kodwa kungekhona ngendlela eqhelekileyo, kodwa ngendlela endikwazi ngayo ngoku (sele nditshilo ukuba andizange ndiyiqonde kakuhle le meko ngoku). Okokuqala, yenza umzobo omtsha kwaye ukhethe ibhodi yeMega2560.

Uzenza njani iinkqubo zeWindows kwiArduino

Gcina umzobo kwifayile uze ukope ngokulandelayo Ithala leencwadi laseNanonyam. Kuya kuba kuchanekile ukubandakanya iiheader zamathala eencwadi, kodwa andiyazi indlela yokubhala ukudityaniswa kweefayile zomntu ngamnye kwiArduino, ke okwangoku siza kubandakanya amathala eencwadi ngokuthe ngqo (kwaye zonke ngaxeshanye):

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

Kuya kulunga ngakumbi ukwenza imodyuli ekhethekileyo "Nanonyam yeArduino", enokufakwa ngokuthe ngqo kwiArduino. Ngokukhawuleza nje ukuba ndiyiqikelele, ndiya kuyenza, kodwa okwangoku ndibonisa nje undoqo wokusebenza ngomatshini obonakalayo. Sibhala le khowudi ilandelayo:

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

Zoba ngale nkqubo ingakhutshelwa apha. Inkcazo eneenkcukacha yemisebenzi khangela kwisiza. Ndiyathemba ukuba izimvo kule khowudi zanele ukufumana umxholo wayo. Apha umsebenzi sys_Nanonyam() idlala indima ye "password" kumatshini wenyani, osusa izithintelo kwimisebenzi ebonakalayo. Ngaphandle kwalo msebenzi, inkqubo iya kuvala emva kwemizuzwana emi-3 yokusebenza.

Sicofa iqhosha elithi "Khangela" kwaye akufanele kubekho naziphi na iimpazamo.

Uzenza njani iinkqubo zeWindows kwiArduino

Ngoku kufuneka ufumane ifayile yokubini (i-firmware). Khetha imenyu "Sketch >> Thumela ngaphandle ifayile yokubini (CTRL+ALT+S)Β«.

Uzenza njani iinkqubo zeWindows kwiArduino

Oku kuya kukopa iifayile ezimbini ze-HEX kwifolda yokuzoba. Sithatha kuphela ifayile ngaphandle kwesimaphambili "nge_bootloader.mega".

Kukho iindlela ezininzi zokuchaza ifayile ye-HEX kumatshini wenyani weNanonyam, zonke zichaziwe kweli phepha. Ndicebisa ukudala ecaleni kwefayile Nanonyam.exe ifayile indlela, apho ubhalisa indlela epheleleyo kwifayile yethu ye-HEX. Emva koko ungabaleka Nanonyam.exe. Sifumana ifestile enombhalo wethu.

Uzenza njani iinkqubo zeWindows kwiArduino

Ngokufanayo, unokwenza iinkqubo kwezinye iindawo, ezifana ne-AVR Studio okanye iWinAVR.

Kulapho sigqibezela khona ukwazana kwethu noNanonyam. Ingcamango ephambili kufuneka icace. Imizekelo emininzi ikwiwebhusayithi.. Ukuba kukho abantu abaneleyo abazimisele ukusebenzisa le projekthi, ngoko ndiya kwenza imizekelo emininzi kwaye ndiqhubeke "ukugcwalisa" iilayibrari ezisebenzayo. Iingcamango ezicacileyo zokuphuhliswa kweprojekthi kunye neengxelo zokungasebenzi kakuhle, iibhugi kunye nezinambuzane zamkelwe. Kuyacetyiswa ukuba ubalathise kubafowunelwa, iboniswe kwindawo. Kwaye ingxoxo yamkelekile kwizimvo.

Enkosi nonke ngengqalelo yenu kunye nenkqubo elungileyo!

umthombo: www.habr.com

Yongeza izimvo