Ahoana ny famoronana programa ho an'ny Windows amin'ny Arduino

Ahoana ny famoronana programa ho an'ny Windows amin'ny Arduino

Indray andro dia nahazo hevitra adala aho mba hifangaro Tondro laser 500 amin'ny toerana iray. Nandany fotoana be aho ary nanao izany. Tena nahavariana sy tsy nisy ilana azy ilay izy, nefa tiako. Enim-bolana lasa izay dia nahazo hevitra adala hafa aho. Amin'ity indray mitoraka ity dia tsy mahagaga mihitsy, fa mahasoa kokoa. Nandany fotoana betsaka tamin’izany koa aho. Ary amin'ity lahatsoratra ity dia manolotra ny dikan-beta amin'ny hevitro adala faharoa aho.

Nantsoiko hoe Nanonyam (Nanonyam) ilay tetikasa ary nanamboatra logo ho azy mihitsy aza aho (5 minitra iray manontolo aho vao nanao sary).

Ahoana ny famoronana programa ho an'ny Windows amin'ny Arduino

Ho an'ireo izay mieritreritra momba ny Arduino, dia afaka milaza isika fa Nanonyam dia virtoaly Arduino ampinga hifehy Windows.

Amin'ny teny hafa, Nanonyam dia milina virtoaly izay mampiasa ny firmware ho an'ny microcontroller AVR (ATMEGA2560 soso-kevitra) ho bytecode. Ao anatin'ity milina virtoaly ity dia misy simulator kernel AVR, fa raha tokony ho ny periferika, izay hita ao amin'ny adiresy SRAM 0x0060 hatramin'ny 0x01FF, dia misy interface tsara amin'ny fiasa virtoaly (anisan'izany ny Windows API functions). Ary eto dia zava-dehibe ny mahatakatra avy hatrany: ny kaody ho an'ny Nanonyam dia tsy tokony hanana fidirana amin'ny faritra fitadidiana voatondro, mba tsy hiantsoana tsy nahy, ohatra, ny asan'ny famafana rakitra na fandrafetana kapila. Ny fitadidiana SRAM sisa tavela manomboka amin'ny 0x0200 ka hatramin'ny 0xFFFF (lehibe kokoa noho ny amin'ny microcontroller tena izy) dia azon'ny mpampiasa amin'ny tanjona rehetra. Tokony ho marihiko avy hatrany fa misy fiarovana manokana amin'ny fanombohana tsy nahy ny firmware amin'ny microcontroller tena izy (na firmware avy amin'ny maritrano hafa): alohan'ny hanombohan'ny asa "mampidi-doza" dia mila miantso asa virtoaly sarotra manokana ianao. Misy singa fiarovana hafa ihany koa.

Mba hamoronana programa ho an'i Nanonyam dia mila mampiasa tranomboky manokana ianao izay mampihatra ny fiasa virtoaly rehetra misy ankehitriny. Ampidino ny milina virtoaly Nanonyam sy ny tranomboky azonao atao eto. ary eto Pejy famaritana asa virtoaly. Ary eny, ny tranokalako dia tena tranainy ary tsy mifanaraka amin'ny fitaovana finday.

Ny Nanonyam dia maimaim-poana ho an'ny fampiasana an-trano sy ara-barotra. Ny programa Nanonyam dia omena amin'ny fototra "toy ny misy". Tsy misy kaody loharano nomena.

Amin'izao fotoana izao dia eo amin'ny sehatry ny fitsapana ny programa. Fampiasa virtoaly 200 eo ho eo no nampiharina izay ahafahanao mamorona programa tsotra ho an'ny Windows.
Mazava ho azy fa tsy ho azo atao ny mamorona zavatra sarotra amin'ny milina virtoaly toy izany, satria tsy misy afa-tsy 256 kB fahatsiarovana ho an'ny kaody. Ny angona dia azo tehirizina amin'ny rakitra misaraka, ny buffer ho an'ny ampahany grafika dia ampiharina ivelany. Ny fiasa rehetra dia notsorina ary namboarina ho an'ny maritrano 8-bit.

Inona no azonao atao any Nanonyam? Nahita olana maromaro aho.

Fitsapana sakana fandaharana

Indray mandeha aho dia nila namolavola menu sarotra ho an'ny fampisehoana sary 128x64 pixel. Tena tsy tiako ny hampiditra tsy tapaka ny firmware ao anaty microcontroller tena izy mba hijerena ny endriky ny pixel. Toy izany no nahaterahan'ny hevitra momba an'i Nanoyam. Ny sary etsy ambany dia sary avy amin'ny fampisehoana OLED tena izy amin'ny iray amin'ireo singa ao amin'io sakafo io ihany. Ankehitriny dia afaka miasa amin'izany aho tsy misy fitaovana tena izy.

Ahoana ny famoronana programa ho an'ny Windows amin'ny Arduino

Nanonyam (amin'ny endriny farany) dia fitaovana tsara amin'ny fampandehanana ny programa blocs ho an'ny microcontrollers, satria manana fiasa miasa amin'ny grafika (azonao atao ny manahaka ny fampisehoana sy ny tondro), miaraka amin'ny rakitra (azonao atao ny manao logs, mamaky angona fitsapana), miaraka amin'ny klavier (afaka mamaky bokotra 10 ianao miaraka), miaraka amin'ny seranana COM (misy singa miavaka eto).

Mamorona fandaharana haingana

Ohatra, mila manamboatra rakitra lahatsoratra 100500 haingana ianao. Ny tsirairay dia mila sokafana, ovaina kely araka ny algorithm tsotra, voatahiry ary mihidy. Raha master Python ianao dia arahabaina fa manana ny zava-drehetra ianao. Fa raha lehilahy Arduino inveterate ianao (ary maro amin'izy ireo), dia hanampy anao hamaha ity olana ity i Nanonyam. Izany indrindra no tanjoko faharoa ao amin'ny Nanonyam: manampy asa mahasoa maro toy ny fanodinana lahatsoratra, famoronana pikantsary na fakan-tsarimihetsika ao amin'ny rafitra (izay rehetra, raha ny marina, dia efa misy), ary koa ny asa maro hafa amin'ny famahana ny fahazarana. asa.

Fanandramana fitaovana amin'ny alΓ lan'ny seranan-tsambo COM

Nanonyam dia afaka miasa toy ny terminal izay miasa araka ny algorithm anao. Azonao atao ny manao sary sakafo kely hifehezana ny fitaovana ary hampiseho ny angona voaray avy amin'ny seranana. Azonao atao ny mitahiry sy mamaky angona avy amin'ny rakitra ho an'ny fanadihadiana. Fitaovana mety ho an'ny debugging tsotra sy ny calibration ny fitaovana, ary koa ny famoronana tontonana fanaraha-maso fitaovana virtoaly tsotra. Ity tetikasa ity dia mety ho tena ilaina ho an'ny mpianatra sy tanora mpahay siansa.

Fanofanana fandaharana

Na izany aza, toy ny amin'ny tetikasa Arduino iray manontolo, ny tena mahasoa an'i Nanonyam dia miankina amin'ny fahatsoran'ny asany, ny interface ary ny bootloader. Noho izany, ity tetikasa ity dia tokony hahaliana ny mpandrindra vaovao sy ireo izay afa-po amin'ny ambaratonga Arduino. Raha ny marina, izaho dia mbola tsy nianatra Arduino amin'ny antsipiriany, satria nampiasa WinAVR na AVR Studio foana aho, ary nanomboka tamin'ny assembler. Noho izany, ny programa ohatra etsy ambany dia ho diso kely, fa tena miasa.

Salama, Habr!

Fotoana izao hahafantarana ny sasany amin'ireo endri-javatra an'i Nanonyam sy hanoratana programa tsotra. Amin'ny Arduino no hanoratantsika, fa tsy amin'ny fomba mahazatra, fa amin'ny fomba azoko izao (efa nilaza aho fa tsy mbola azoko tsara ity tontolo ity). Voalohany, mamorona sketsa vaovao ary safidio ny tabilao Mega2560.

Ahoana ny famoronana programa ho an'ny Windows amin'ny Arduino

Tehirizo ao anaty rakitra ny kisary ary adika eo akaikiny Nanonyam library. Mety ho marina ny hampiditra lohatenin'ny tranomboky, saingy tsy haiko ny fomba fanangonana rakitra tsirairay ao amin'ny Arduino, ka amin'izao fotoana izao dia hampiditra mivantana ny tranomboky izahay (miaraka amin'ny iray):

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

Tsara kokoa aza ny manao module manokana "Nanonyam for Arduino", izay azo apetraka mivantana avy amin'ny Arduino. Raha vao hitako izany dia hataoko izany, fa amin'izao fotoana izao dia asehoko fotsiny ny maha-zava-dehibe ny miasa amin'ny milina virtoaly. Manoratra ity code manaraka ity izahay:

//Π‘Ρ€Π°Π·Ρƒ послС запуска рисуСм тСкст Π² ΠΎΠΊΠ½Π΅
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 miaraka amin'ity programa ity azo alaina eto. Famaritana amin'ny antsipiriany momba ny asa karohy amin'ny tranokala. Manantena aho fa ny fanehoan-kevitra amin'ity fehezan-dalΓ na ity dia ampy hampita ny hevitra. Ity ny fiasa sys_Nanonyam() mitana ny andraikitry ny "password" ho an'ny milina virtoaly, izay manala ny famerana amin'ny fiasa virtoaly. Raha tsy misy an'io fiasa io dia hikatona ny programa aorian'ny fiasana 3 segondra.

Tsindrio ny bokotra "Check" ary tsy tokony hisy lesoka.

Ahoana ny famoronana programa ho an'ny Windows amin'ny Arduino

Ankehitriny dia mila maka ny rakitra binary (firmware) ianao. Safidio ny sakafo "Sketch>> Export rakitra binary (CTRL+ALT+S)".

Ahoana ny famoronana programa ho an'ny Windows amin'ny Arduino

Amin'ity tranga ity, rakitra HEX roa no hadika amin'ny lahatahiry misy ny sketch. Ny rakitra ihany no raisinay raha tsy misy ny tovana β€œwith_bootloader.mega”.

Misy fomba maro hanondroana rakitra HEX mankany amin'ny milina virtoaly Nanonyam, voalaza fa izy rehetra amin'ity pejy ity. Manoro hevitra aho hamorona eo akaikin'ny rakitra Nanonyam.exe rakitra Nanonyam.path, izay hanoratana ny lalana feno mankany amin'ny rakitra HEX. Aorian'izay dia afaka mihazakazaka ianao Nanonyam.exe. Mahazo varavarankely misy soratra izahay.

Ahoana ny famoronana programa ho an'ny Windows amin'ny Arduino

Toy izany koa, afaka mamorona programa amin'ny tontolo hafa ianao, ohatra, ao amin'ny AVR Studio na WinAVR.

Eto no hamaranay ny fampahafantarana an'i Nanonyam. Tokony hazava ny hevi-dehibe. Misy ohatra maro kokoa ao amin'ny tranokala. Raha ampy ny olona vonona hampiasa ity tetikasa ity, dia hanao ohatra bebe kokoa aho ary hanohy "hameno" ny tranomboky virtoaly. Hevitra manokana momba ny fampandrosoana ny tetikasa sy ny tatitra momba ny tsy fahombiazana, ny bibikely ary ny fahadisoana dia ekena. Tsara ny mitarika azy ireo amin'ny fifandraisana, voalaza ao amin'ny tranonkala. Ary ny fifanakalozan-kevitra dia raisina amin'ny fanehoan-kevitra.

Misaotra anareo rehetra tamin'ny fifantohana sy ny fandaharana faly!

Source: www.habr.com

Add a comment