Yuav ua li cas los tsim cov kev pab cuam rau Windows hauv Arduino

Yuav ua li cas los tsim cov kev pab cuam rau Windows hauv Arduino

Muaj ib hnub kuv muaj lub tswv yim vwm coj los 500 laser pointers nyob rau hauv ib qhov chaw. Kuv siv sijhawm ntau thiab ua nws. Nws muab tawm zoo kawg thiab tsis muaj txiaj ntsig, tab sis kuv nyiam nws. Rau lub hlis dhau los kuv muaj lwm lub tswv yim vwm. Lub sijhawm no, tsis yog txhua qhov zoo nkauj, tab sis muaj txiaj ntsig ntau dua. Kuv kuj siv sijhawm ntau rau nws. Thiab hauv tsab xov xwm no, kuv nthuav tawm beta version ntawm kuv lub tswv yim vwm thib ob.

Kuv hu rau qhov project Nanonyam (Nanonyam) thiab txawm tuaj nrog lub logo rau nws (Kuv kos rau 5 feeb).

Yuav ua li cas los tsim cov kev pab cuam rau Windows hauv Arduino

Rau cov neeg uas xav txog Arduino, peb tuaj yeem hais tias Nanoyam yog daim thaiv Arduino virtual rau kev tswj Windows.

Hauv lwm lo lus, Nanonyam yog lub tshuab virtual uas siv lub firmware rau AVR microcontroller (ATMEGA2560 tau pom zoo) raws li bytecode. Hauv lub tshuab virtual no yog AVR core simulator, tab sis tsis yog cov khoom siv peripheral, uas nyob ntawm SRAM chaw nyob los ntawm 0x0060 txog 0x01FF, muaj qhov tshwj xeeb cuam tshuam rau kev ua haujlwm virtual (xws li Windows API functions). Thiab ntawm no nws yog ib qho tseem ceeb heev kom nkag siab tam sim ntawd: cov cai rau Nanoyam yuav tsum tsis txhob muaj kev nkag mus rau lub cim xeeb ntau yam, yog li tsis txhob yuam kev hu, piv txwv li, kev ua haujlwm ntawm kev rho tawm cov ntaub ntawv lossis formatting ib disk. Tus so ntawm SRAM nco ntau ntawm 0x0200 txog 0xFFFF (qhov no yog ntau tshaj li hauv microcontroller tiag tiag) muaj rau tus neeg siv rau txhua lub hom phiaj. Kuv nco ntsoov tam sim ntawd tias muaj kev tiv thaiv tshwj xeeb tiv thaiv kev sib tsoo ntawm lub firmware ntawm lub microcontroller tiag tiag (lossis firmware los ntawm lwm tus qauv): ua ntej ua haujlwm "kev phom sij", koj yuav tsum hu rau qhov tshwj xeeb ua kom yuam kev virtual. Tseem muaj lwm yam kev ruaj ntseg nta thiab.

Txhawm rau tsim cov kev pab cuam rau Nanonyam, koj yuav tsum siv cov tsev qiv ntawv tshwj xeeb uas siv tag nrho cov haujlwm virtual tam sim no. Rub tawm Nanonyam virtual tshuab thiab cov tsev qiv ntawv rau nws tuaj yeem nyob ntawm no. Thiab ntawm no nplooj ntawv piav qhia kev ua haujlwm virtual. Thiab yog, kuv qhov chaw yog qhov tseem ceeb heev thiab tsis yoog rau cov khoom siv txawb.

Nanonyam yog pub dawb rau kev siv hauv tsev thiab kev lag luam. Qhov kev pab cuam Nanonyam yog muab rau ntawm "raws li yog" hauv paus. Qhov chaw code tsis muab.

Qhov kev zov me nyuam tam sim no nyob rau theem kev sim. Ua tiav txog 200 lub luag haujlwm virtual uas tso cai rau koj los tsim cov haujlwm yooj yim rau Windows.
Obviously, tsim ib yam dab tsi nyuaj nyob rau hauv xws li ib tug virtual tshuab yuav tsis ua hauj lwm, txij li thaum lub cim xeeb rau cov code tsuas yog 256 kB. Cov ntaub ntawv tuaj yeem khaws cia rau hauv cov ntaub ntawv sib cais, qhov tsis rau cov duab nraaj yog siv sab nraud. Tag nrho cov haujlwm yog yooj yim thiab yoog rau 8-ntsis architecture.

Koj tuaj yeem ua dab tsi hauv Nanonyam? Kuv tuaj nrog ob peb yam teeb meem.

Kev loj hlob ntawm cov kev pab cuam blocks

Kuv ib zaug xav tau los tsim cov ntawv qhia zaub mov nyuaj rau 128x64 dot graphic zaub. Kuv yeej tsis xav mus tas li thauj cov firmware rau hauv microcontroller tiag tiag kom pom cov pixels zoo li cas. Thiab yog li ntawd lub tswv yim ntawm Nanonyam tau yug los. Daim duab hauv qab no qhia cov duab los ntawm OLED tiag tiag ntawm ib qho ntawm cov khoom ntawm tib cov ntawv qhia zaub mov. Tam sim no kuv tuaj yeem ua haujlwm los ntawm nws yam tsis muaj lub cuab yeej tiag.

Yuav ua li cas los tsim cov kev pab cuam rau Windows hauv Arduino

Nanonyam (hauv nws lub tswv yim kawg) yog lub cuab yeej zoo rau kev ua haujlwm tawm cov kev pab cuam blocks rau microcontrollers, vim muaj cov haujlwm ua haujlwm nrog cov duab (koj tuaj yeem simulate cov lus qhia thiab ntsuas), nrog cov ntaub ntawv (koj tuaj yeem ua cov cav, nyeem cov ntaub ntawv xeem), nrog rau ib lub keyboard (koj tuaj yeem nyeem txog 10 nyees khawm tib lub sijhawm), nrog COM ports (ntawm no yog ib qho khoom cais).

Tsim cov phiaj xwm ceev

Piv txwv li, koj yuav tsum tau ceev cov ntaub ntawv 100500. Txhua tus yuav tsum tau qhib, hloov me ntsis raws li qee qhov yooj yim algorithm, txuag thiab kaw. Yog tias koj yog tus tswv Python, ces kuv zoo siab rau koj, koj muaj txhua yam. Tab sis yog tias koj yog ib tug hardened arduino (thiab muaj ntau ntawm lawv), ces Nanonyam yuav pab tau koj daws qhov teeb meem no. Nov yog kuv lub hom phiaj thib ob hauv Nanonyam: txhawm rau ntxiv ntau cov haujlwm tseem ceeb xws li kev sau ntawv, noj cov screenshots lossis simulating keystrokes hauv lub kaw lus (tag nrho cov uas, los ntawm txoj kev, twb muaj lawm), nrog rau ntau lwm yam haujlwm rau kev daws cov haujlwm niaj hnub. .

Kuaj kho vajtse ntawm COM chaw nres nkoj

Nanonyam tuaj yeem ua raws li lub davhlau ya nyob twg uas ua haujlwm raws li koj qhov algorithm. Koj tuaj yeem kos cov ntawv qhia me me los tswj lub cuab yeej thiab tso saib cov ntaub ntawv tau txais los ntawm qhov chaw nres nkoj. Koj tuaj yeem txuag thiab nyeem cov ntaub ntawv los ntawm cov ntaub ntawv rau kev txheeb xyuas. Ib qho cuab yeej siv tau yooj yim rau kev debugging thiab calibration ntawm kho vajtse, nrog rau tsim cov cuab yeej virtual tswj yooj yim. Rau cov tub ntxhais kawm thiab cov kws tshawb fawb hluas, qhov project no tuaj yeem pab tau zoo heev.

Kev cob qhia programming

Txawm li cas los xij, nrog rau tag nrho Arduino qhov project, lub ntsiab tseem ceeb ntawm Nanonyam nyob rau hauv qhov yooj yim ntawm kev ua haujlwm, interface thiab bootloader. Yog li ntawd, qhov project no yuav tsum muaj kev txaus siab rau novice programmers thiab cov neeg uas txaus siab rau qib ntawm arduino. Los ntawm txoj kev, kuv tus kheej tseem tsis tau kawm arduino kom ntxaws, vim kuv ib txwm siv WinAVR lossis AVR Studio, tab sis pib nrog kev sib dhos. Yog li ntawd, qhov kev pab cuam piv txwv hauv qab no yuav yog me ntsis yuam kev, tab sis ua haujlwm heev.

Nyob zoo Habr!

Nws yog lub sijhawm kom paub txog qee qhov Nanoyam nta thiab sau ib qho kev pab cuam yooj yim. Peb yuav sau hauv Arduino, tab sis tsis yog nyob rau hauv txoj kev ib txwm, tab sis nyob rau hauv txoj kev kuv tuaj yeem tam sim no (Kuv twb tau hais tias kuv tsis tau xav txog qhov chaw no zoo heev). Ua ntej, tsim ib daim duab tshiab thiab xaiv lub rooj tsavxwm Mega2560.

Yuav ua li cas los tsim cov kev pab cuam rau Windows hauv Arduino

Txuag cov duab kos rau hauv cov ntaub ntawv thiab luam tawm tom ntej Nanoyam Library. Nws yuav yog qhov tseeb uas suav nrog cov npe ntawm cov tsev qiv ntawv, tab sis kuv tsis paub yuav ua li cas sau cov ntaub ntawv sib sau ua ke hauv Arduino, yog li tam sim no peb tsuas yog suav nrog cov tsev qiv ntawv ncaj qha (thiab tag nrho ib zaug):

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

Nws yuav yog qhov tseeb dua los ua qhov tshwj xeeb module "Nanonyam rau Arduino", uas tuaj yeem ntsia tau ncaj qha los ntawm Arduino. Thaum kuv xam pom nws, kuv yuav ua, tab sis tam sim no kuv tsuas yog qhia cov ntsiab lus ntawm kev ua haujlwm nrog lub tshuab virtual. Peb sau cov cai hauv qab no:

//Π‘Ρ€Π°Π·Ρƒ послС запуска рисуСм тСкст Π² ΠΎΠΊΠ½Π΅
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 nrog qhov program no tuaj yeem rub tawm ntawm no. Cov lus piav qhia ntxaws txog cov haujlwm nrhiav ntawm qhov chaw. Kuv vam tias cov lus hauv cov cai no txaus kom tau txais cov ntsiab lus ntawm nws. Ntawm no muaj nuj nqi sys_Nanoyam() plays lub luag haujlwm ntawm "password" rau lub tshuab virtual, uas tshem tawm cov kev txwv ntawm kev ua haujlwm virtual. Yog tsis muaj txoj haujlwm no, qhov kev zov me nyuam yuav kaw tom qab 3 vib nas this ntawm kev ua haujlwm.

Peb nias lub pob "Xim" thiab yuav tsum tsis txhob muaj qhov yuam kev.

Yuav ua li cas los tsim cov kev pab cuam rau Windows hauv Arduino

Tam sim no koj yuav tsum tau txais cov ntaub ntawv binary (firmware). Xaiv cov ntawv qhia zaub mov "Sketch >> Export binary ntaub ntawv (CTRL + ALT + S)".

Yuav ua li cas los tsim cov kev pab cuam rau Windows hauv Arduino

Qhov no yuav luam ob HEX cov ntaub ntawv mus rau daim ntawv teev cov duab kos. Peb tsuas yog siv cov ntaub ntawv tsis muaj lub npe "with_bootloader.mega".

Muaj ntau txoj hauv kev los qhia HEX cov ntaub ntawv rau Nanonyam virtual tshuab, txhua tus tau piav qhia ntawm nplooj ntawv no. Kuv xav kom tsim ib sab ntawm cov ntaub ntawv Nanoyam.exe cov ntaub ntawv txoj kev, nyob rau hauv uas mus rau npe tag nrho txoj kev mus rau peb cov ntaub ntawv HEX. Tom qab ntawd koj tuaj yeem khiav Nanoyam.exe. Peb tau txais ib lub qhov rais nrog peb inscription.

Yuav ua li cas los tsim cov kev pab cuam rau Windows hauv Arduino

Ib yam li ntawd, koj tuaj yeem tsim cov kev pabcuam hauv lwm qhov chaw, xws li AVR Studio lossis WinAVR.

Nov yog qhov uas peb ua tiav peb cov kev paub nrog Nanoyam. Lub tswv yim tseem ceeb yuav tsum meej. Ntau cov piv txwv muaj nyob rau ntawm lub vev xaib.. Yog tias muaj coob tus neeg txaus siab siv qhov project no, ces kuv yuav ua piv txwv ntxiv thiab txuas ntxiv mus "sau" cov tsev qiv ntawv muaj nuj nqi virtual. Cov tswv yim zoo rau kev txhim kho ntawm qhov project thiab cov lus ceeb toom ntawm kev ua haujlwm tsis zoo, cov kab thiab kab raug lees txais. Nws yog ib advisable kom coj lawv mus rau kev sib cuag, qhia rau ntawm qhov chaw. Thiab kev sib tham yog txais tos hauv cov lus.

Ua tsaug rau koj cov lus qhia thiab kev ua haujlwm zoo!

Tau qhov twg los: www.hab.com

Ntxiv ib saib