Ngenye imini ndaba nembono ephambeneyo ukuba ndize nayo
Ndibize iprojekthi ethi Nanonyam (Nanonyam) ndaze ndaza nelogo yayo (ndizobile imizuzu emi-5).
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
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.
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.
Gcina umzobo kwifayile uze ukope ngokulandelayo
#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
Sicofa iqhosha elithi "Khangela" kwaye akufanele kubekho naziphi na iimpazamo.
Ngoku kufuneka ufumane ifayile yokubini (i-firmware). Khetha imenyu "Sketch >> Thumela ngaphandle ifayile yokubini (CTRL+ALT+S)Β«.
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
Ngokufanayo, unokwenza iinkqubo kwezinye iindawo, ezifana ne-AVR Studio okanye iWinAVR.
Kulapho sigqibezela khona ukwazana kwethu noNanonyam. Ingcamango ephambili kufuneka icace.
Enkosi nonke ngengqalelo yenu kunye nenkqubo elungileyo!
umthombo: www.habr.com