Maitiro ekugadzira zvirongwa zveWindows muArduino

Maitiro ekugadzira zvirongwa zveWindows muArduino

Rimwe zuva ndakambofunga kupenga 500 laser anonongedzera munzvimbo imwechete. Ndakatora nguva yakawanda uye ndakazviita. Zvakaratidza zvinoshamisa uye zvisingabatsiri, asi ndakazvifarira. Mwedzi mitanhatu yapfuura ndakava neimwe pfungwa yakapenga. Panguva ino, kwete zvachose zvinoshamisa, asi zvakanyanya kubatsira. Ndakapedzawo nguva yakawanda pazviri. Uye mune ino chinyorwa, ini ndinopa beta vhezheni yangu yechipiri yekupenga zano.

Ndakadaidza chirongwa ichi kuti Nanonyam (Nanonyam) uye ndakatouya nechiratidzo chayo (ndakadhirowa kwemaminitsi mashanu).

Maitiro ekugadzira zvirongwa zveWindows muArduino

Kune avo vanofunga maererano neArduino, tinogona kutaura kuti Nanonyam ndeyechokwadi Arduino nhoo yekudzora Windows.

Mune mamwe mazwi, Nanonyam muchina chaiwo unoshandisa firmware yeAVR microcontroller (ATMEGA2560 inokurudzirwa) seiyo bytecode. Mukati memuchina uyu chaiwo mune AVR musimboti simulator, asi pachinzvimbo chezvivharo, izvo zviri paSRAM kero kubva 0x0060 kusvika 0x01FF, pane yakakosha interface kune chaiwo mabasa (kusanganisira Windows API mabasa). Uye pano zvakakosha zvikuru kuti unzwisise pakarepo: kodhi yeNanonyam haifaniri kuwana chero ruzivo rwekuyeuka kwakatarwa, kuti urege kufona netsaona, semuenzaniso, basa rekudzima mafaira kana kufomatisa dhisiki. Iyo yakasara yeSRAM ndangariro inotangira pa0x0200 kusvika 0xFFFF (izvi zvinopfuura mune chaiyo microcontroller) inowanikwa kumushandisi chero chinangwa. Ini ndinoona ipapo ipapo kuti kune yakasarudzika dziviriro kubva netsaona kuvhurwa kweiyo firmware microcontroller (kana firmware kubva kune imwe dhizaini): usati waita "ane njodzi" mabasa, iwe unofanirwa kufonera yakakosha inonyengera basa. Kune mamwe maficha ekuchengetedza zvakare.

Kugadzira zvirongwa zveNanonyam, unofanirwa kushandisa akakosha maraibhurari anoita ese aripo aripo chaiwo mabasa. Dhawunirodha iyo Nanonyam chaiyo muchina uye maraibhurari ayo Unogona ipapo. Uye pano peji yetsanangudzo yebasa rechokwadi. Uye hongu, saiti yangu ndeyekare uye haina kuchinjirwa nharembozha.

Nanonyam ndeyemahara yekushandisa pamba uye yekutengesa. Chirongwa cheNanonyam chinopihwa pane "sezvazviri". Source code haina kupihwa.

Chirongwa ichi parizvino chiri muchikamu chekuyedza. Inoitwa nezve 200 chaiwo mabasa anobvumidza iwe kugadzira akareruka zvirongwa zveWindows.
Zviripachena, kugadzira chimwe chinhu chakaoma mumushini wakadaro hachishande, sezvo chiyeuchidzo chekodhi chiri 256 kB chete. Dhata inogona kuchengetwa mumafaira akasiyana, iyo buffer yeiyo graphic chikamu inoitwa kunze. Mabasa ese akarerutswa uye akachinjirwa 8-bit architecture.

Chii chaungaite muNanonyam? Ndauya nematambudziko mashoma.

Kuvandudzwa kwezvivharo zvepurogiramu

Ini ndaimboda kugadzira menyu yakaoma ye 128x64 dot graphic kuratidza. Ini ndanga ndisingadi kugara ndichirodha firmware mune chaiyo microcontroller kuti ndione kuti mapixels anotaridzika sei. Uye saka pfungwa yaNanonyam yakazvarwa. Mufananidzo uri pazasi unoratidza mufananidzo kubva kune chaiyo OLED kuratidzwa kwechimwe chezvinhu pane imwecheteyo menyu. Iye zvino ndinogona kushanda kuburikidza nayo pasina mudziyo chaiwo.

Maitiro ekugadzira zvirongwa zveWindows muArduino

Nanonyam (mupfungwa yayo yekupedzisira) chishandiso chakanaka chekushanda kunze kwezvivharo zvechirongwa zve microcontrollers, sezvo paine mabasa ekushanda nemifananidzo (iwe unogona kutevedzera maratidziro uye zviratidzo), nemafaira (unogona kugadzira matanda, kuverenga data rekuyedza), ne keyboard (iwe unogona kuverenga kusvika kumabhatani gumi panguva imwe chete), ine COM ports (heino chinhu chakasiyana).

Kugadzira Mapurogiramu Anokurumidza

Semuenzaniso, iwe unofanirwa kukurumidza kugadzirisa 100500 mameseji mafaera. Imwe neimwe inoda kuvhurwa, kugadziridzwa zvishoma zvinoenderana neimwe yakapusa algorithm, yakachengetedzwa uye yakavharwa. Kana iwe uri tenzi wePython, saka ndinokukorokotedza, une zvese. Asi kana iwe uri arduino yakaoma (uye kune dzakawanda dzadzo), ipapo Nanonyam ichakubatsira mukugadzirisa dambudziko iri. Ichi ndicho chinangwa changu chechipiri muNanonyam: kuwedzera mabasa akawanda anobatsira akadai sekugadzirisa zvinyorwa, kutora zvidzitiro kana kuenzanisa makiyi muhurongwa (zvose izvo, nenzira, zvatovepo), pamwe nemamwe mabasa akawanda ekugadzirisa mabasa echinyakare. .

Yedza hardware kuburikidza neCOM port

Nanonyam inogona kuita senge terminal inoshanda zvinoenderana nealgorithm yako. Iwe unogona kudhirowa diki menyu kudzora chishandiso uye kuratidza iyo data yakagamuchirwa kubva kuchiteshi. Iwe unogona kuchengetedza uye kuverenga data kubva kumafaira ekuongorora. Chishandiso chinoshanda chekugadzirisa zviri nyore uye kuenzanisa kwehardware, pamwe nekugadzira zviri nyore dhizaini kutonga mapaneru. Kune vadzidzi nevadiki vesainzi, chirongwa ichi chinogona kubatsira zvakanyanya.

Programming training

Nekudaro, sekunge neiyo yese Arduino purojekiti, kukosha kukuru kweNanonyam kuri mukurerutsa mabasa, interface uye bootloader. Naizvozvo, chirongwa ichi chinofanirwa kunge chiri chekufarira kune vanotanga mapurogiramu uye avo vanogutsikana nedanho reArduino. Nenzira, ini pachangu handisati ndadzidza arduino zvakadzama, nekuti ndaigara ndichishandisa WinAVR kana AVR Studio, asi ndakatanga neassembler. Naizvozvo, chirongwa chemuenzaniso pazasi chinenge chisina kunaka, asi chinoshanda chaizvo.

Mhoro Habr!

Yave nguva yekujairana nezvimwe zveNanonyam uye kunyora chirongwa chakareruka. Tichanyora muArduino, asi kwete nenzira yakajairwa, asi nenzira yandinogona iye zvino (ndatotaura kuti ini handisati ndanyatsonzwisisa mamiriro ezvinhu aya). Kutanga, gadzira sketch nyowani uye sarudza iyo Mega2560 board.

Maitiro ekugadzira zvirongwa zveWindows muArduino

Chengetedza sketch kune faira uye kopi inotevera Nanonyam library. Zvingave zvakanaka kuisa misoro yemaraibhurari, asi ini handizive kunyora kuunganidzwa kwemafaira ega muArduino, saka parizvino tichangobatanidza maraibhurari zvakananga (uye zvese kamwechete):

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

Zvingave zvakatonyanya kurongeka kugadzira yakakosha module "Nanonyam yeArduino", inogona kuiswa yakananga kubva kuArduino. Pandinongozvifunga, ndinozviita, asi parizvino ndiri kungoratidza kukosha kwekushanda nemuchina chaiwo. Isu tinonyora kodhi inotevera:

//Π‘Ρ€Π°Π·Ρƒ послС запуска рисуСм тСкст Π² ΠΎΠΊΠ½Π΅
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 nechirongwa ichi inogona kutorwa pano. Tsanangudzo yakadzama yemabasa tsvaga panzvimbo. Ndinovimba zvakataurwa mukodhi iyi zvakakwana kuti ndiwane pfungwa yacho. Pano basa sys_Nanonyam() inotamba basa re "password" yemuchina chaiwo, unobvisa zvirambidzo pamabasa chaiwo. Pasina basa iri, chirongwa chinovhara mushure memasekonzi matatu ekushanda.

Isu tinodzvanya bhatani re "Check" uye hapafanirwe kuve nekukanganisa.

Maitiro ekugadzira zvirongwa zveWindows muArduino

Iye zvino unoda kuwana bhinari faira (firmware). Sarudza iyo menyu"Sketch >> Export binary file (CTRL+ALT+S)".

Maitiro ekugadzira zvirongwa zveWindows muArduino

Izvi zvinokopa maviri HEX mafaera kune sketch folda. Isu tinotora faira chete pasina prefix "ne_bootloader.mega".

Pane nzira dzinoverengeka dzekutsanangura faira reHEX kune Nanonyam virtual muchina, ese anotsanangurwa pane peji ino. Ini ndinokurudzira kugadzira padivi pefaira Nanonyam.exe faira nzira, iyo yekunyoresa nzira yakazara kune yedu HEX faira. Mushure mezvo unogona kumhanya Nanonyam.exe. Tinowana hwindo rine zvinyorwa zvedu.

Maitiro ekugadzira zvirongwa zveWindows muArduino

Saizvozvo, iwe unogona kugadzira zvirongwa mune dzimwe nharaunda, senge AVR Studio kana WinAVR.

Apa ndipo patinopedzisa kuzivana kwedu naNanonyam. Pfungwa huru inofanira kujeka. Mimwe mienzaniso iri pawebhusaiti.. Kana paine vanhu vakakwana vanoda kushandisa chirongwa ichi, ini ndichaita mimwe mienzaniso uye ndoenderera mberi ne "kuzadza" iyo chaiyo basa raibhurari. Concrete mazano ekusimudzira purojekiti uye mishumo yekusashanda zvakanaka, tsikidzi uye tsikidzi zvinogamuchirwa. Zvinokurudzirwa kuvatungamira kune vanobatika, inoratidzwa pawebhusaiti. Uye kukurukurirana kunogamuchirwa mumashoko.

Ndinokutendai mose nekuteerera kwenyu uye kuronga kwakanaka!

Source: www.habr.com

Voeg