
Tsiku lina ndinali ndi maganizo openga oti ndibweretse . Ndinakhala nthawi yambiri ndikuzichita. Zinakhala zochititsa chidwi komanso zopanda ntchito, koma ndidazikonda. Miyezi isanu ndi umodzi yapitayo ndinali ndi lingaliro lina lopenga. Nthawi ino, osati zowoneka bwino, koma zothandiza kwambiri. Ndinatheranso nthawi yambiri pa izo. Ndipo m'nkhaniyi, ndikupereka mtundu wa beta wa lingaliro langa lachiwiri lopenga.
Ndinayitcha pulojekitiyi kuti Nanonyam (Nanonyam) ndipo ndinabweranso ndi chizindikiro chake (ndinajambula kwa mphindi zisanu).

Kwa iwo omwe amaganiza m'mawu a Arduino, tinganene kuti Nanonyam ndi chishango cha Arduino chowongolera. Windows.
Mwa kuyankhula kwina, Nanonyam ndi makina enieni omwe amagwiritsa ntchito firmware ya AVR microcontroller (ATMEGA2560 ikulimbikitsidwa) ngati bytecode. Makina enieni awa ali ndi choyimitsa cha AVR kernel, koma m'malo mwa zolumikizira zomwe zili pa maadiresi a SRAM kuyambira 0x0060 mpaka 0x01FF, ali ndi mawonekedwe apadera a ntchito zenizeni (kuphatikiza ntchito) Windows API). Ndikofunika kumvetsetsa nthawi yomweyo: Nanonyam code siyenera kufika pamtundu wa kukumbukira womwe watchulidwa mwanjira iliyonse, kuti tipewe kuyambitsa mwangozi, mwachitsanzo, ntchito yochotsa mafayilo kapena kukonza ma disk. Mtundu wotsala wa kukumbukira kwa SRAM, kuyambira 0x0200 mpaka 0xFFFF (womwe ndi waukulu kuposa wa microcontroller yeniyeni), umapezeka kwa wogwiritsa ntchito pazifukwa zilizonse. Ndiyenera kuzindikira nthawi yomweyo kuti pali chitetezo chapadera kuti asagwiritse ntchito mwangozi firmware ya microcontroller yeniyeni (kapena firmware kuchokera ku kapangidwe kosiyana): musanayambitse ntchito "zoopsa", ntchito yapadera, yanzeru iyenera kuyitanidwa. Palinso zinthu zina zachitetezo.
Kuti mupange mapulogalamu a Nanonyam, muyenera kugwiritsa ntchito malaibulale apadera omwe amagwiritsa ntchito zonse zomwe zilipo. Tsitsani makina enieni a Nanonyam ndi malaibulale ake . Koma . Ndipo inde, tsamba langa ndi lachikale kwambiri ndipo silinasinthidwe ndi mafoni.
Nanonyam ndi yaulere kugwiritsa ntchito kunyumba ndi malonda. Pulogalamu ya Nanonyam imaperekedwa pa "monga momwe ziliri". Khodi yochokera sikunaperekedwe.
Pulogalamuyi ili mu gawo loyesera. Ntchito pafupifupi 200 za pa intaneti zakhazikitsidwa, zomwe zalola kuti pakhale mapulogalamu osavuta a Windows.
Mwachiwonekere, kupanga chinthu chovuta mu makina oterowo sikungagwire ntchito, chifukwa kukumbukira code ndi 256 kB yokha. Deta ikhoza kusungidwa m'mafayilo osiyana, buffer ya gawo lazithunzi imayendetsedwa kunja. Ntchito zonse ndizosavuta komanso zimasinthidwa kuti zikhale ndi zomangamanga za 8-bit.
Kodi mungatani ku Nanonyam? Ndinakumana ndi mavuto angapo.
Kupanga midadada ya pulogalamu
Nthawi ina ndidafunikira kupanga menyu yovuta yowonetsera madontho 128x64. Sindinkafuna nthawi zonse kuyika firmware mu microcontroller yeniyeni kuti ndiwone momwe ma pixel amawonekera. Ndipo kotero lingaliro la Nanonyam linabadwa. Chithunzi chomwe chili pansipa chikuwonetsa chithunzi kuchokera ku chiwonetsero chenicheni cha OLED cha chimodzi mwazinthu zomwe zili patsamba lomwelo. Tsopano nditha kugwira ntchito popanda chipangizo chenicheni.

Nanonyam (m'lingaliro lake lomaliza) ndi chida chabwino chogwiritsira ntchito midadada yamapulogalamu a microcontrollers, popeza pali ntchito zogwirira ntchito ndi zithunzi (mungathe kuyerekezera zowonetsera ndi zizindikiro), ndi mafayilo (mungathe kupanga zipika, kuwerenga deta yoyesera), ndi kiyibodi (mutha kuwerenga mpaka mabatani 10 nthawi imodzi), yokhala ndi madoko a COM (pali chinthu chosiyana).
Kupanga Mapulogalamu Ofulumira
Mwachitsanzo, muyenera kukonza mwachangu mafayilo amtundu wa 100500. Iliyonse iyenera kutsegulidwa, kusinthidwa pang'ono molingana ndi algorithm yosavuta, yosungidwa ndi kutsekedwa. Ngati ndinu mbuye wa Python, ndiye ndikukuthokozani, muli ndi chilichonse. Koma ngati ndinu arduino owumitsidwa (ndipo pali ambiri a iwo), ndiye Nanonyam kudzakuthandizani kuthetsa vutoli. Ichi ndi cholinga changa chachiwiri ku Nanonyam: kuwonjezera ntchito zambiri zothandiza monga kukonza malemba, kujambula zithunzi kapena kufananiza makiyi mu dongosolo (zonsezi, mwa njira, zilipo kale), komanso ntchito zina zambiri zothetsera ntchito zachizolowezi. .
Kuyesa zida kudzera pa COM port
Nanonyam imatha kukhala ngati terminal yomwe imagwira ntchito molingana ndi algorithm yanu. Mutha kujambula menyu yaying'ono kuti muwongolere chipangizocho ndikuwonetsa zomwe mwalandira kuchokera padoko. Mutha kusunga ndikuwerenga zomwe zili m'mafayilo kuti muwunike. Chida chothandizira pakuwongolera kosavuta ndikuwongolera ma hardware, komanso kupanga mapanelo osavuta owongolera zida. Kwa ophunzira ndi asayansi achinyamata, ntchitoyi ikhoza kukhala yothandiza kwambiri.
Maphunziro a mapulogalamu
Komabe, monga momwe zilili ndi pulojekiti yonse ya Arduino, phindu lalikulu la Nanonyam liri mu kuphweka kwa ntchito, mawonekedwe ndi bootloader. Chifukwa chake, polojekitiyi iyenera kukhala yosangalatsa kwa olemba mapulogalamu a novice komanso omwe ali okhutira ndi mulingo wa arduino. Mwa njira, ine ndekha sindinaphunzire arduino mwatsatanetsatane, chifukwa nthawi zonse ndimagwiritsa ntchito WinAVR kapena AVR Studio, koma ndinayamba ndi assembler. Choncho, chitsanzo pulogalamu pansipa adzakhala pang'ono cholakwika, koma ndithu ntchito.
Hello Habr!
Yakwana nthawi yoti muzolowere zina za Nanonyam ndikulemba pulogalamu yosavuta. Tidzalemba ku Arduino, koma osati mwachizolowezi, koma momwe ndingathere tsopano (ndanena kale kuti sindinadziwe bwino chilengedwechi). Choyamba, pangani chojambula chatsopano ndikusankha bolodi la Mega2560.

Sungani zojambulazo ku fayilo ndikujambulani lotsatira . Zingakhale zolondola kuphatikiza mitu yamalaibulale, koma sindikudziwa momwe ndingalembe kuphatikizira mafayilo pawokha ku Arduino, kotero pakadali pano tingophatikizanso malaibulale mwachindunji (ndi zonse nthawi imodzi):
#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"Zingakhale zolondola kwambiri kupanga gawo lapadera "Nanonyam for Arduino", lomwe likhoza kukhazikitsidwa mwachindunji kuchokera ku Arduino. Ndikangozindikira, ndizichita, koma pakadali pano ndikungowonetsa kufunikira kogwira ntchito ndi makina enieni. Timalemba khodi ili:
//Сразу после запуска рисуем текст в окне
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);//Задержка и разгрузка процессора
}Lembani ndi pulogalamuyi . Kufotokozera mwatsatanetsatane za ntchito . Ndikhulupilira kuti ndemanga zomwe zili mu code iyi ndizokwanira kuti tipeze mfundo zake. Apa ntchito sys_Nanonyam() amasewera udindo wa "achinsinsi" kwa makina pafupifupi, amene amachotsa zoletsa ntchito pafupifupi. Popanda ntchitoyi, pulogalamuyo idzatseka pambuyo pa masekondi atatu akugwira ntchito.
Timakanikiza batani la "Check" ndipo sipayenera kukhala zolakwika.

Tsopano muyenera kupeza fayilo ya binary (firmware). Sankhani menyu "Sketch >> Tumizani fayilo ya binary (CTRL+ALT+S)".

Izi zidzakopera mafayilo awiri a HEX ku chikwatu chojambula. Timangotenga fayilo popanda prefix "with_bootloader.mega".
Pali njira zingapo zofotokozera fayilo ya HEX ku makina enieni a Nanonyam, onse akufotokozedwa . Ndikupangira kupanga pafupi ndi fayilo Nanonyam.exe fayilo njira, momwe mungalembetsere njira yonse ku fayilo yathu ya HEX. Pambuyo pake mukhoza kuthamanga Nanonyam.exe. Timapeza zenera ndi zolemba zathu.

Momwemonso, mutha kupanga mapulogalamu m'malo ena, monga AVR Studio kapena WinAVR.
Apa ndipamene timamaliza kudziwana ndi Nanonyam. Mfundo yaikulu iyenera kukhala yomveka bwino. . Ngati pali anthu okwanira omwe akufuna kugwiritsa ntchito ntchitoyi, ndiye kuti ndipanga zitsanzo zambiri ndikupitiliza "kudzaza" malaibulale omwe amagwira ntchito. Malingaliro a konkriti pa chitukuko cha polojekiti ndi malipoti a zovuta, nsikidzi ndi nsikidzi zimavomerezedwa. Ndikoyenera kuwatsogolera ku ma contacts, . Ndipo zokambirana ndizolandiridwa mu ndemanga.
Zikomo nonse chifukwa cha chidwi chanu komanso mapulogalamu abwino!
Source: www.habr.com
