Giunsa paghimo ang mga programa alang sa Windows sa Arduino

Giunsa paghimo ang mga programa alang sa Windows sa Arduino

Usa ka adlaw naa koy buang nga ideya nga dad-on 500 ka laser pointer sa usa ka lugar. Gigugol nako ang daghang oras ug gibuhat kini. Kini nahimong talagsaon ug walay kapuslanan, apan ganahan ko niini. Unom ka bulan ang milabay naa koy laing buang nga ideya. Niining higayona, dili gyud katingad-an, apan labi ka mapuslanon. Gigugol usab nako ang daghang oras niini. Ug sa kini nga artikulo, gipresentar nako ang usa ka beta nga bersyon sa akong ikaduha nga buang nga ideya.

Gihinganlan nako ang proyekto nga Nanonyam (Nanonyam) ug nakahimo pa gani og logo alang niini (nag-drawing ko sulod sa 5 minutos).

Giunsa paghimo ang mga programa alang sa Windows sa Arduino

Alang sa mga naghunahuna bahin sa Arduino, makaingon kita nga ang Nanonyam usa ka virtual Arduino nga taming alang sa pagkontrol sa Windows.

Sa laing pagkasulti, ang Nanonyam usa ka virtual machine nga naggamit sa firmware alang sa AVR microcontroller (girekomenda ang ATMEGA2560) isip bytecode. Sa sulod niini nga virtual nga makina mao ang usa ka AVR core simulator, apan imbis sa mga peripheral, nga nahimutang sa SRAM nga mga adres gikan sa 0x0060 ngadto sa 0x01FF, adunay usa ka espesyal nga interface sa virtual nga mga gimbuhaton (lakip ang Windows API functions). Ug dinhi hinungdanon kaayo nga masabtan dayon: ang code alang sa Nanonyam kinahanglan nga wala’y bisan unsang pag-access sa gitakda nga hanay sa memorya, aron dili aksidente nga tawagan, pananglitan, ang function sa pagtangtang sa mga file o pag-format sa usa ka disk. Ang nahabilin sa SRAM memory range gikan sa 0x0200 hangtod 0xFFFF (kini labaw pa sa usa ka tinuod nga microcontroller) magamit sa tiggamit alang sa bisan unsang katuyoan. Namatikdan dayon nako nga adunay usa ka espesyal nga panalipod batok sa aksidenteng paglansad sa firmware sa usa ka tinuod nga microcontroller (o firmware gikan sa lain nga arkitektura): sa wala pa i-aktibo ang "peligro" nga mga gimbuhaton, kinahanglan nimo nga tawagan ang usa ka espesyal nga tricky virtual function. Adunay uban nga mga bahin sa seguridad usab.

Aron makahimo og mga programa alang sa Nanonyam, kinahanglan nimong gamiton ang mga espesyal nga librarya nga nag-implementar sa tanang anaa karon nga virtual function. I-download ang Nanonyam virtual machine ug mga librarya alang niini mahimong naa dinhi. Ug dinhi panid sa paghulagway sa virtual function. Ug oo, ang akong site labi ka karaan ug wala gipahiangay alang sa mga mobile device.

Ang Nanonyam libre alang sa balay ug komersyal nga paggamit. Ang programa sa Nanonyam gihatag sa "as is" nga basehan. Wala gihatag ang source code.

Ang programa karon anaa sa yugto sa pagsulay. Gipatuman ang mga 200 ka virtual nga gimbuhaton nga nagtugot kanimo sa paghimo og yano nga mga programa alang sa Windows.
Dayag nga ang paghimo og usa ka butang nga komplikado sa ingon nga virtual machine dili molihok, tungod kay ang memorya sa code 256 kB lamang. Ang datos mahimong tipigan sa lain nga mga file, ang buffer alang sa graphic nga bahin gipatuman sa gawas. Ang tanan nga mga gimbuhaton gipasimple ug gipahiangay alang sa 8-bit nga arkitektura.

Unsa ang imong mahimo sa Nanonyam? Naa koy pipila ka problema.

Pag-uswag sa mga bloke sa programa

Kinahanglan ko kaniadto nga magdesinyo ug komplikadong menu para sa 128x64 dot graphic display. Dili gyud nako gusto nga kanunay nga i-load ang firmware sa usa ka tinuod nga microcontroller aron makita kung unsa ang hitsura sa mga pixel. Ug mao nga ang ideya sa Nanonyam natawo. Ang numero sa ubos nagpakita sa usa ka hulagway gikan sa tinuod nga OLED nga display sa usa sa mga butang sa samang menu. Karon mahimo nako kini nga buhaton nga wala’y tinuud nga aparato.

Giunsa paghimo ang mga programa alang sa Windows sa Arduino

Ang Nanonyam (sa katapusan nga ideya niini) usa ka maayong himan alang sa pagtrabaho sa mga bloke sa programa alang sa mga microcontroller, tungod kay adunay mga gimbuhaton alang sa pagtrabaho sa mga graphic (mahimo nimong i-simulate ang mga pasundayag ug mga indikasyon), nga adunay mga file (mahimo nimong maghimo mga troso, magbasa sa datos sa pagsulay), nga adunay usa ka keyboard (mahimo nimong basahon ang hangtod sa 10 ka mga buton sa parehas nga oras), nga adunay mga COM port (ania ang usa ka lahi nga butang).

Paghimo ug Dali nga mga Programa

Pananglitan, kinahanglan nimo nga dali nga iproseso ang 100500 nga mga file sa teksto. Ang matag usa kinahanglan nga ablihan, gamay nga giusab sumala sa pipila ka yano nga algorithm, gitipigan ug sirado. Kung ikaw usa ka agalon sa Python, unya gipahalipayan ko ikaw, naa nimo ang tanan. Apan kung ikaw usa ka gahi nga arduino (ug adunay daghan niini), nan ang Nanonyam makatabang kanimo sa pagsulbad niini nga problema. Kini ang akong ikaduha nga katuyoan sa Nanonyam: aron makadugang daghang mapuslanon nga mga gimbuhaton sama sa pagproseso sa teksto, pagkuha sa mga screenshot o pagsundog sa mga keystroke sa sistema (nga ang tanan, sa paagi, naa na), ingon man daghang uban pang mga gimbuhaton alang sa pagsulbad sa naandan nga mga buluhaton. .

Pagsulay sa hardware pinaagi sa COM port

Ang Nanonyam mahimong molihok ingon usa ka terminal nga molihok sumala sa imong algorithm. Mahimo ka magdrowing og gamay nga menu aron makontrol ang aparato ug ipakita ang datos nga nadawat gikan sa pantalan. Mahimo nimong tipigan ug basahon ang datos gikan sa mga file para sa pagtuki. Usa ka magamit nga himan alang sa yano nga pag-debug ug pag-calibrate sa hardware, ingon man alang sa paghimo og yano nga virtual nga mga control panel sa instrumento. Alang sa mga estudyante ug batan-ong mga siyentipiko, kini nga proyekto mahimong mapuslanon kaayo.

Pagbansay sa programming

Bisan pa, sama sa tibuuk nga proyekto sa Arduino, ang panguna nga kapuslanan sa Nanonyam naa sa pagpayano sa mga gimbuhaton, interface ug bootloader. Busa, kini nga proyekto kinahanglan nga interesado sa mga bag-ong programmer ug kadtong natagbaw sa lebel sa arduino. Pinaagi sa dalan, ako sa akong kaugalingon wala gihapon nagtuon sa arduino sa detalye, tungod kay kanunay kong gigamit ang WinAVR o AVR Studio, apan nagsugod sa assembler. Busa, ang panig-ingnan nga programa sa ubos mahimong usa ka gamay nga sayup, apan nagtrabaho.

Hello Habr!

Panahon na aron pamilyar sa pipila ka mga bahin sa Nanonyam ug pagsulat usa ka yano nga programa. Magsulat kami sa Arduino, apan dili sa naandan nga paagi, apan sa paagi nga mahimo nako karon (nakaingon na ako nga wala pa nako nahibal-an kini nga palibot). Una, paghimo og bag-ong sketch ug pilia ang Mega2560 board.

Giunsa paghimo ang mga programa alang sa Windows sa Arduino

I-save ang sketch sa usa ka file ug kopyaha ang sunod Nanonyam library. Husto nga ilakip ang mga ulohan sa mga librarya, apan wala ako kahibalo kung giunsa pagsulat ang paghugpong sa mga indibidwal nga mga file sa Arduino, mao nga sa pagkakaron ilakip ra naton ang mga librarya direkta (ug tanan sa usa ka higayon):

#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"

Mas husto pa ang paghimo og espesyal nga module nga "Nanonyam para sa Arduino", nga mahimong i-install direkta gikan sa Arduino. Sa diha nga nahibal-an ko kini, buhaton ko kini, apan sa pagkakaron gipakita ko lang ang esensya sa pagtrabaho sa usa ka virtual machine. Gisulat namo ang mosunod nga code:

//Π‘Ρ€Π°Π·Ρƒ послС запуска рисуСм тСкст Π² ΠΎΠΊΠ½Π΅
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);//Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈ Ρ€Π°Π·Π³Ρ€ΡƒΠ·ΠΊΠ° процСссора
}

Sketch uban niini nga programa mahimong ma-download dinhi. Detalyadong paghulagway sa mga gimbuhaton pangitaa sa site. Nanghinaut ko nga ang mga komentaryo niini nga code igo na aron makuha ang kinatibuk-an niini. Dinhi function sys_Nanonyam() nagdula sa papel sa usa ka "password" alang sa virtual nga makina, nga nagtangtang sa mga pagdili sa mga virtual nga gimbuhaton. Kung wala kini nga function, ang programa magsira pagkahuman sa 3 segundos nga operasyon.

Gipugos namon ang buton nga "Check" ug kinahanglan nga wala’y mga sayup.

Giunsa paghimo ang mga programa alang sa Windows sa Arduino

Karon kinahanglan nimo nga makakuha usa ka binary file (firmware). Pilia ang menu "Sketch >> Export binary file (CTRL+ALT+S)".

Giunsa paghimo ang mga programa alang sa Windows sa Arduino

Kini magkopya sa duha ka HEX file ngadto sa sketch folder. Gikuha lang namo ang file nga walay prefix nga "with_bootloader.mega".

Adunay daghang mga paagi sa pagtino sa usa ka HEX file sa Nanonyam virtual machine, ang tanan niini gihulagway sa niini nga panid. Gisugyot ko nga maghimo sunod sa file Nanonyam.exe file dalan, diin irehistro ang tibuuk nga agianan sa among HEX file. Pagkahuman mahimo ka nga modagan Nanonyam.exe. Nakakuha kami usa ka bintana nga adunay among inskripsiyon.

Giunsa paghimo ang mga programa alang sa Windows sa Arduino

Sa susama, makahimo ka og mga programa sa ubang mga palibot, sama sa AVR Studio o WinAVR.

Dinhi nahuman ang among kaila ni Nanonyam. Ang panguna nga ideya kinahanglan nga klaro. Dugang nga mga pananglitan anaa sa website.. Kung adunay igo nga mga tawo nga andam nga mogamit niini nga proyekto, nan maghimo ako daghang mga pananglitan ug magpadayon sa "pagpuno" sa mga librarya sa virtual function. Ang mga konkretong ideya alang sa pagpalambo sa proyekto ug mga taho sa mga malfunctions, mga bug ug mga bug gidawat. Gisugyot nga idirekta sila sa mga kontak, gipakita sa website. Ug ang panaghisgot gidawat sa mga komento.

Salamat sa tanan sa imong pagtagad ug maayong programming!

Source: www.habr.com

Idugang sa usa ka comment