Nola sortu Windows-erako programak Arduino-n

Nola sortu Windows-erako programak Arduino-n

Egun batean ekartzeko ideia zoroa izan nuen 500 laser erakusle leku bakarrean. Denbora asko eman nuen eta egin nuen. Ikusgarria eta alferrikakoa atera zen, baina gustatu zitzaidan. Duela sei hilabete beste ideia zoro bat izan nuen. Oraingoan, ez da batere ikusgarria, baina askoz ere erabilgarriagoa. Nik ere denbora asko eman nuen horretan. Eta artikulu honetan, nire bigarren ideia zoroaren beta bertsioa aurkezten dut.

Nanonyam (Nanonyam) proiektuari deitu nion eta logo bat ere asmatu nuen (5 minutuz marraztu nuen).

Nola sortu Windows-erako programak Arduino-n

Arduinori dagokionez pentsatzen dutenentzat, Nanonyam Windows kontrolatzeko Arduino ezkutu birtuala dela esan dezakegu.

Beste era batera esanda, Nanonyam AVR mikrokontrolagailurako firmwarea erabiltzen duen makina birtual bat da (ATMEGA2560 gomendatzen da) bytecode gisa. Makina birtual honen barruan AVR core simulagailu bat dago, baina 0x0060-tik 0x01FF-ra SRAM helbideetan kokatzen diren periferikoen ordez, funtzio birtualetarako interfaze berezi bat dago (Windows API funtzioak barne). Eta hemen oso garrantzitsua da berehala ulertzea: Nanonyam-en kodeak ez luke zehaztutako memoria barrutirako sarbiderik izan behar, hala nola, nahi gabe ez deitzeko, adibidez, fitxategiak ezabatzeko edo disko bat formateatzeko funtzioa. SRAM memoriaren gainerako 0x0200 eta 0xFFFF bitartekoa (hau benetako mikrokontrolagailu batean baino gehiago da) erabiltzailearentzat eskuragarri dago edozein helburutarako. Berehala ohartzen naiz benetako mikrokontrolagailu baten firmwarea (edo beste arkitektura bateko firmwarea) ustekabean abiarazteko babes berezia dagoela: funtzio "arriskutsuak" aktibatu aurretik, funtzio birtual delikatua berezi bat deitu behar duzu. Beste segurtasun ezaugarri batzuk ere badaude.

Nanonyam-erako programak sortzeko, gaur egun erabilgarri dauden funtzio birtual guztiak inplementatzen dituzten liburutegi bereziak erabili behar dituzu. Deskargatu Nanonyam makina birtuala eta liburutegiak horretarako orduan dezakezu. Baina funtzio birtualaren deskribapen orria. Eta bai, nire webgunea oso primitiboa da eta ez dago gailu mugikorretarako egokituta.

Nanonyam doakoa da etxeko erabilerarako eta merkataritzarako. Nanonyam programa "dagoen moduan" eskaintzen da. Iturburu kodea ez da ematen.

Gaur egun programa proba fasean dago. Windows-erako programa errazak sortzeko aukera ematen duten 200 funtzio birtual inguru inplementatu ditu.
Jakina, halako makina birtualean zerbait konplikatua sortzeak ez du funtzionatuko, kodearen memoria 256 kB baino ez baita. Datuak fitxategi bereizietan gorde daitezke, zati grafikoaren buffer-a kanpoan ezartzen da. Funtzio guztiak sinplifikatu eta 8 biteko arkitekturarako egokituta daude.

Zer egin dezakezu Nanonyam-en? Arazo batzuk bururatu zitzaizkidan.

Programa-blokeen garapena

Behin menu konplexu bat diseinatu behar nuen 128x64 puntuko pantaila grafiko baterako. Benetan ez nuen nahi firmwarea etengabe kargatu benetako mikrokontrolagailu batean pixelak nola ikusten diren ikusteko. Eta horrela sortu zen Nanonyam-en ideia. Beheko irudiak menu bereko elementuetako baten benetako OLED pantaila bateko irudia erakusten du. Orain lan egin dezaket benetako gailurik gabe.

Nola sortu Windows-erako programak Arduino-n

Nanonyam (bere azken ideian) tresna ona da mikrokontrolagailuentzako programa-blokeak lantzeko, grafikoekin lan egiteko funtzioak baitaude (pantailak eta adierazleak simulatu ditzakezu), fitxategiekin (erregistroak egin ditzakezu, proba-datuak irakurri), teklatu bat (gehienez 10 botoi irakur ditzakezu aldi berean), COM atakekin (hemen aparteko elementu bat).

Programa azkarrak sortzea

Adibidez, 100500 testu fitxategi azkar prozesatu behar dituzu. Bakoitza ireki behar da, algoritmo sinple baten arabera pixka bat aldatu, gorde eta itxi. Python maisua bazara, zoriondu egiten zaitut, dena daukazu. Baina arduino gogortua bazara (eta horietako asko badaude), Nanonyam-ek arazo hau konpontzen lagunduko dizu. Hau da nire bigarren helburua Nanonyam-en: funtzio erabilgarria asko gehitzea, hala nola, testuak prozesatzea, pantaila-argazkiak egitea edo sisteman tekla sakatzeak simulatzea (horiek guztiak, bide batez, dagoeneko hor daude), baita ohiko zereginak konpontzeko beste hainbat funtzio ere. .

Hardwarea probatzen COM atakaren bidez

Nanonyam-ek zure algoritmoaren arabera funtzionatzen duen terminal gisa jardun dezake. Menu txiki bat marraz dezakezu gailua kontrolatzeko eta atakatik jasotako datuak bistaratzeko. Fitxategietako datuak gorde eta irakur ditzakezu aztertzeko. Hardwarea arazketa eta kalibratzeko tresna erabilgarria, baita tresna birtual kontrol-panel sinpleak sortzeko ere. Ikasle eta zientzialari gazteentzat, proiektu hau oso erabilgarria izan daiteke.

Programazio prestakuntza

Hala ere, Arduino proiektu osoan bezala, Nanonyam-en erabilgarritasun nagusia funtzioen, interfazearen eta abiarazlearen sinplifikazioan datza. Horregatik, proiektu honek programatzaile hasiberrientzat eta arduino mailarekin gustura daudenentzat interesgarria izan behar du. Bide batez, nik neuk oraindik ez dut arduino zehatz-mehatz aztertu, beti WinAVR edo AVR Studio erabiltzen bainuen, baina muntatzailearekin hasi nintzen. Hori dela eta, beheko adibideko programa apur bat oker egongo da, baina nahiko funtzionatuko du.

Kaixo Habr!

Bada garaia Nanonyam-en ezaugarri batzuk ezagutzeko eta programa sinple bat idazteko. Arduinoz idatziko dugu, baina ez ohiko moduan, orain ahal dudan moduan baizik (esan dut oraindik ez dudala ingurune hau oso ondo asmatu). Lehenik eta behin, sortu zirriborro berri bat eta hautatu Mega2560 taula.

Nola sortu Windows-erako programak Arduino-n

Gorde krokisa fitxategi batean eta kopiatu hurrengoan Nanonyam liburutegia. Zuzena litzateke liburutegien goiburuak sartzea, baina ez dakit nola idatzi banakako fitxategien konpilazioa Arduinon, beraz, oraingoz liburutegiak zuzenean sartuko ditugu (eta aldi berean):

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

Are zuzenagoa litzateke "Nanonyam Arduinorako" modulu berezi bat egitea, Arduinotik zuzenean instalatu daitekeena. Asmatu bezain laster, egingo dut, baina oraingoz makina birtual batekin lan egitearen funtsa erakusten ari naiz. Kode hau idazten dugu:

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

Zirriborroa programa honekin hemen deskargatu daiteke. Funtzioen deskribapen zehatza bilatu gunean. Kode honetako iruzkinak nahikoa izatea espero dut horren mamia jasotzeko. Hemen funtzioa sys_Nanonyam() makina birtualerako "pasahitz" papera betetzen du, funtzio birtualen murrizketak kentzen dituena. Funtzio hori gabe, programa itxi egingo da 3 segundo funtzionatu ondoren.

"Egiaztatu" botoia sakatzen dugu eta ez luke akatsik egon behar.

Nola sortu Windows-erako programak Arduino-n

Orain fitxategi bitar bat (firmware) lortu behar duzu. Hautatu menua "Sketch>>Esportatu fitxategi bitarra (CTRL+ALT+S)".

Nola sortu Windows-erako programak Arduino-n

Honek bi HEX fitxategi kopiatuko ditu zirriborroen karpetara. "with_bootloader.mega" aurrizkirik gabeko fitxategia bakarrik hartzen dugu.

Nanonyam makina birtualean HEX fitxategi bat zehazteko hainbat modu daude, guztiak deskribatuta daude orrialde honetan. Fitxategiaren ondoan sortzea proposatzen dut Nanonyam.exe fitxategia bidea, bertan gure HEX fitxategirako bide osoa erregistratzeko. Horren ondoren, korrika egin dezakezu Nanonyam.exe. Gure inskripzioa duen leiho bat jasoko dugu.

Nola sortu Windows-erako programak Arduino-n

Era berean, programak sor ditzakezu beste ingurune batzuetan, hala nola AVR Studio edo WinAVR.

Hemen amaitzen dugu Nanonyam-ekin dugun ezagutza. Ideia nagusiak argia izan behar du. Adibide gehiago webgunean daude.. Proiektu hau erabiltzeko prest dagoen jende nahikoa badago, adibide gehiago egingo ditut eta funtzioen liburutegi birtualak "betetzen" jarraituko dut. Proiektua garatzeko ideia konkretuak eta akatsen, akatsen eta akatsen txostenak onartzen dira. Kontaktuetara bideratzea komeni da, gunean adierazita. Eta eztabaida ongi etorria da iruzkinetan.

Eskerrik asko guztioi zuen arretagatik eta programazio onagatik!

Iturria: www.habr.com

Gehitu iruzkin berria