Jinsi ya kuunda programu za Windows katika Arduino

Jinsi ya kuunda programu za Windows katika Arduino

Siku moja nilikuwa na wazo la kichaa kuleta Viashiria 500 vya leza katika sehemu moja. Nilitumia muda mwingi na kuifanya. Iligeuka kuwa ya kuvutia na isiyo na maana, lakini niliipenda. Miezi sita iliyopita nilipata wazo lingine la kichaa. Wakati huu, sio ya kuvutia kabisa, lakini ni muhimu zaidi. Pia nilitumia muda mwingi juu yake. Na katika nakala hii, ninawasilisha toleo la beta la wazo langu la pili la kichaa.

Niliita mradi huo Nanonyam (Nanonyam) na hata nikaja na nembo yake (nilichora kwa dakika 5).

Jinsi ya kuunda programu za Windows katika Arduino

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 Unaweza kisha. Lakini ukurasa wa maelezo ya utendakazi pepe. Na ndio, tovuti yangu ni ya zamani sana na haijabadilishwa kwa vifaa vya rununu.

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.

Jinsi ya kuunda programu za Windows katika Arduino

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.

Jinsi ya kuunda programu za Windows katika Arduino

Hifadhi mchoro kwenye faili na unakili inayofuata Maktaba ya Nanonyam. Itakuwa sahihi kujumuisha vichwa vya maktaba, lakini sijui jinsi ya kuandika mkusanyiko wa faili za kibinafsi huko Arduino, kwa hivyo kwa sasa tutajumuisha maktaba moja kwa moja (na zote mara moja):

#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 inaweza kupakuliwa hapa. Maelezo ya kina ya kazi tafuta kwenye tovuti. Natumai maoni katika nambari hii yanatosha kupata kiini chake. Hapa kazi sys_Nanonyam() ina jukumu la "nenosiri" kwa mashine ya mtandaoni, ambayo huondoa vikwazo kwenye kazi pepe. Bila kipengele hiki, programu itafungwa baada ya sekunde 3 za uendeshaji.

Tunasisitiza kitufe cha "Angalia" na haipaswi kuwa na makosa yoyote.

Jinsi ya kuunda programu za Windows katika Arduino

Sasa unahitaji kupata faili ya binary (firmware). Chagua menyu "Mchoro>>Hamisha faili ya jozi (CTRL+ALT+S)".

Jinsi ya kuunda programu za Windows katika Arduino

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 kwenye ukurasa huu. Ninapendekeza kuunda karibu na faili Nanonyam.exe faili njia, ambapo kusajili njia kamili ya faili yetu ya HEX. Baada ya hapo unaweza kukimbia Nanonyam.exe. Tunapata dirisha na uandishi wetu.

Jinsi ya kuunda programu za Windows katika Arduino

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. Mifano zaidi iko kwenye tovuti.. Iwapo kuna watu wa kutosha walio tayari kutumia mradi huu, basi nitafanya mifano zaidi na kuendelea "kujaza" maktaba za kazi pepe. Mawazo ya saruji kwa ajili ya maendeleo ya mradi na ripoti za malfunctions, mende na mende zinakubaliwa. Inashauriwa kuwaelekeza kwa mawasiliano, imeonyeshwa kwenye tovuti. Na mjadala unakaribishwa katika maoni.

Asante nyote kwa umakini wako na programu nzuri!

Chanzo: mapenzi.com

Kuongeza maoni