Momwe mungapangire mapulogalamu a Windows mu Arduino

Momwe mungapangire mapulogalamu a Windows mu Arduino

Tsiku lina ndinali ndi maganizo openga oti ndibweretse 500 zolozera laser pamalo amodzi. 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).

Momwe mungapangire mapulogalamu a Windows mu Arduino

Kwa iwo omwe amaganiza molingana ndi Arduino, titha kunena kuti Nanonyam ndi chishango cha Arduino chowongolera Windows.

Mwanjira ina, Nanonyam ndi makina enieni omwe amagwiritsa ntchito firmware kwa AVR microcontroller (ATMEGA2560 ndiyomwe ikulimbikitsidwa) ngati bytecode. M'kati mwa makinawo muli choyimira cha AVR, koma m'malo mwa zida zotumphukira, zomwe zili pa ma adilesi a SRAM kuchokera ku 0x0060 mpaka 0x01FF, pali mawonekedwe apadera ogwirira ntchito (kuphatikiza ntchito za Windows API). Ndipo apa ndikofunikira kwambiri kumvetsetsa nthawi yomweyo: kachidindo ka Nanonyam sayenera kukhala ndi mwayi wofikira pamakumbukidwe omwe atchulidwa, kuti musayimbe mwangozi, mwachitsanzo, ntchito yochotsa mafayilo kapena kupanga diski. Makumbukidwe ena onse a SRAM amachokera ku 0x0200 mpaka 0xFFFF (izi ndizoposa mu microcontroller yeniyeni) zimapezeka kwa wogwiritsa ntchito pazifukwa zilizonse. Ndikuwona nthawi yomweyo kuti pali chitetezo chapadera pakuyambitsa mwangozi firmware ya microcontroller yeniyeni (kapena fimuweya kuchokera kumamangidwe ena): musanayambe ntchito "zowopsa", muyenera kuyimba ntchito yapadera yachinyengo. Palinso mbali 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 akhoza kukhala pano. Koma tsamba lofotokozera ntchito yeniyeni. 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 pakadali pano ili mu gawo loyesera. Yakhazikitsidwa pafupifupi 200 magwiridwe antchito omwe amakupatsani mwayi wopanga 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.

Momwe mungapangire mapulogalamu a Windows mu Arduino

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.

Momwe mungapangire mapulogalamu a Windows mu Arduino

Sungani zojambulazo ku fayilo ndikujambulani lotsatira Nanonyam library. 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 ikhoza kutsitsidwa apa. Kufotokozera mwatsatanetsatane za ntchito fufuzani patsamba. 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.

Momwe mungapangire mapulogalamu a Windows mu Arduino

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

Momwe mungapangire mapulogalamu a Windows mu Arduino

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 patsamba lino. 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.

Momwe mungapangire mapulogalamu a Windows mu Arduino

Momwemonso, mutha kupanga mapulogalamu m'malo ena, monga AVR Studio kapena WinAVR.

Apa ndipamene timamaliza kudziwana ndi Nanonyam. Mfundo yaikulu iyenera kukhala yomveka bwino. Zitsanzo zambiri zili patsamba.. 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, zowonetsedwa patsamba. Ndipo zokambirana ndizolandiridwa mu ndemanga.

Zikomo nonse chifukwa cha chidwi chanu komanso mapulogalamu abwino!

Source: www.habr.com

Kuwonjezera ndemanga