Siku moja nilikuwa na wazo la kichaa kuleta
Niliita mradi huo Nanonyam (Nanonyam) na hata nikaja na nembo yake (nilichora kwa dakika 5).
Kwa wale wanaofikiria kuhusu Arduino, tunaweza kusema kwamba Nanonyam ni ngao ya kawaida ya Arduino ya kudhibiti Windows.
Kwa maneno mengine, Nanonyam ni mashine pepe inayotumia programu dhibiti ya AVR microcontroller (ATMEGA2560 inapendekezwa) kama bytecode. Ndani ya mashine hii ya mtandaoni kuna kielelezo cha msingi cha AVR, lakini badala ya vifaa vya pembeni, ambavyo viko kwenye anwani za SRAM kutoka 0x0060 hadi 0x01FF, kuna kiolesura maalum cha kazi za kawaida (ikiwa ni pamoja na kazi za Windows API). Na hapa ni muhimu sana kuelewa mara moja: msimbo wa Nanonyam haipaswi kuwa na upatikanaji wowote wa aina maalum ya kumbukumbu, ili usiite kwa ajali, kwa mfano, kazi ya kufuta faili au kupangilia diski. Masafa mengine ya kumbukumbu ya SRAM kutoka 0x0200 hadi 0xFFFF (hii ni zaidi ya katika kidhibiti kidogo halisi) inapatikana kwa mtumiaji kwa madhumuni yoyote. Ninaona mara moja kuwa kuna ulinzi maalum dhidi ya uzinduzi wa ajali wa firmware ya microcontroller halisi (au firmware kutoka kwa usanifu mwingine): kabla ya kuamsha kazi "hatari", unahitaji kupiga simu maalum ya kazi ya hila. Kuna vipengele vingine vya usalama pia.
Ili kuunda programu za Nanonyam, unahitaji kutumia maktaba maalum ambayo hutekeleza kazi zote za sasa zinazopatikana. Pakua mashine pepe ya Nanonyam na maktaba zake
Nanonyam ni bure kwa matumizi ya nyumbani na kibiashara. Mpango wa Nanonyam hutolewa kwa misingi ya "kama ilivyo". Msimbo wa chanzo haujatolewa.
Mpango huo kwa sasa uko katika awamu ya majaribio. Imetekelezwa kuhusu vitendaji 200 pepe vinavyokuruhusu kuunda programu rahisi za Windows.
Kwa wazi, kuunda kitu ngumu katika mashine hiyo ya kawaida haitafanya kazi, kwani kumbukumbu ya msimbo ni 256 kB tu. Data inaweza kuhifadhiwa katika faili tofauti, buffer kwa sehemu ya graphic inatekelezwa nje. Vitendaji vyote hurahisishwa na kubadilishwa kwa usanifu wa 8-bit.
Unaweza kufanya nini huko Nanonyam? Nilikuja na shida kadhaa.
Maendeleo ya vitalu vya programu
Wakati fulani nilihitaji kubuni menyu changamano ya onyesho la picha la nukta 128x64. Kwa kweli sikutaka kupakia firmware kila wakati kwenye kidhibiti kidogo ili kuona jinsi saizi zinavyoonekana. Na kwa hivyo wazo la Nanonyam lilizaliwa. Takwimu hapa chini inaonyesha picha kutoka kwa onyesho halisi la OLED la moja ya vitu kwenye menyu sawa. Sasa ninaweza kuipitia bila kifaa halisi.
Nanonyam (katika wazo lake la mwisho) ni zana nzuri ya kufanyia kazi vizuizi vya programu kwa vidhibiti vidogo, kwani kuna kazi za kufanya kazi na picha (unaweza kuiga maonyesho na viashiria), na faili (unaweza kutengeneza magogo, kusoma data ya jaribio), na kibodi (unaweza kusoma hadi vifungo 10 kwa wakati mmoja), na bandari za COM (hapa ni kipengee tofauti).
Kuunda Programu za Haraka
Kwa mfano, unahitaji haraka kusindika faili za maandishi 100500. Kila moja inahitaji kufunguliwa, kubadilishwa kidogo kulingana na algorithm rahisi, iliyohifadhiwa na kufungwa. Ikiwa wewe ni bwana wa Python, basi nakupongeza, una kila kitu. Lakini ikiwa wewe ni arduino ngumu (na kuna wengi wao), basi Nanonyam itakusaidia katika kutatua tatizo hili. Hili ni lengo langu la pili katika Nanonyam: kuongeza kazi nyingi muhimu kama vile usindikaji wa maandishi, kuchukua picha za skrini au kuiga vibonye kwenye mfumo (yote ambayo, kwa njia, tayari yapo), pamoja na kazi nyingine nyingi za kutatua kazi za kawaida. .
Kujaribu maunzi kupitia bandari ya COM
Nanonyam inaweza kufanya kazi kama terminal inayofanya kazi kulingana na algoriti yako. Unaweza kuchora menyu ndogo ili kudhibiti kifaa na kuonyesha data iliyopokelewa kutoka kwa bandari. Unaweza kuhifadhi na kusoma data kutoka kwa faili kwa uchambuzi. Zana inayofaa kwa utatuzi rahisi na urekebishaji wa maunzi, na pia kuunda paneli rahisi za kudhibiti ala. Kwa wanafunzi na wanasayansi wachanga, mradi huu unaweza kuwa muhimu sana.
Mafunzo ya programu
Walakini, kama ilivyo kwa mradi mzima wa Arduino, manufaa kuu ya Nanonyam yapo katika kurahisisha kazi, kiolesura na kipakiaji. Kwa hivyo, mradi huu unapaswa kuwa wa kupendeza kwa waandaaji wa programu za novice na wale ambao wameridhika na kiwango cha arduino. Kwa njia, mimi mwenyewe bado sijasoma arduino kwa undani, kwa sababu nilitumia WinAVR au Studio ya AVR kila wakati, lakini nilianza na mkusanyiko. Kwa hiyo, programu ya mfano hapa chini itakuwa mbaya kidogo, lakini inafanya kazi kabisa.
Habari Habr!
Ni wakati wa kufahamiana na baadhi ya vipengele vya Nanonyam na kuandika programu rahisi. Tutaandika katika Arduino, lakini si kwa njia ya kawaida, lakini kwa jinsi ninavyoweza sasa (tayari nilisema kwamba sijafikiria mazingira haya vizuri sana). Kwanza, tengeneza mchoro mpya na uchague bodi ya Mega2560.
Hifadhi mchoro kwenye faili na unakili inayofuata
#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"
Itakuwa sahihi zaidi kutengeneza moduli maalum "Nanonyam kwa Arduino", ambayo inaweza kusanikishwa moja kwa moja kutoka kwa Arduino. Mara tu nitakapogundua, nitafanya, lakini kwa sasa ninaonyesha kiini cha kufanya kazi na mashine ya kawaida. Tunaandika nambari ifuatayo:
//Π‘ΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ Π² ΠΎΠΊΠ½Π΅
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);//ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° ΠΈ ΡΠ°Π·Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°
}
Chora na programu hii
Tunasisitiza kitufe cha "Angalia" na haipaswi kuwa na makosa yoyote.
Sasa unahitaji kupata faili ya binary (firmware). Chagua menyu "Mchoro>>Hamisha faili ya jozi (CTRL+ALT+S)".
Hii itanakili faili mbili za HEX kwenye folda ya mchoro. Tunachukua faili tu bila kiambishi awali "with_bootloader.mega".
Kuna njia kadhaa za kutaja faili ya HEX kwa mashine halisi ya Nanonyam, zote zimeelezewa
Vile vile, unaweza kuunda programu katika mazingira mengine, kama vile AVR Studio au WinAVR.
Hapa ndipo tunamaliza kufahamiana na Nanonyam. Wazo kuu linapaswa kuwa wazi.
Asante nyote kwa umakini wako na programu nzuri!
Chanzo: mapenzi.com