Rimwe zuva ndakambofunga kupenga
Ndakadaidza chirongwa ichi kuti Nanonyam (Nanonyam) uye ndakatouya nechiratidzo chayo (ndakadhirowa kwemaminitsi mashanu).
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
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.
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.
Chengetedza sketch kune faira uye kopi inotevera
#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
Isu tinodzvanya bhatani re "Check" uye hapafanirwe kuve nekukanganisa.
Iye zvino unoda kuwana bhinari faira (firmware). Sarudza iyo menyu"Sketch >> Export binary file (CTRL+ALT+S)".
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
Saizvozvo, iwe unogona kugadzira zvirongwa mune dzimwe nharaunda, senge AVR Studio kana WinAVR.
Apa ndipo patinopedzisa kuzivana kwedu naNanonyam. Pfungwa huru inofanira kujeka.
Ndinokutendai mose nekuteerera kwenyu uye kuronga kwakanaka!
Source: www.habr.com