Muaj ib hnub kuv muaj lub tswv yim vwm coj los
Kuv hu rau qhov project Nanonyam (Nanonyam) thiab txawm tuaj nrog lub logo rau nws (Kuv kos rau 5 feeb).
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
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.
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.
Txuag cov duab kos rau hauv cov ntaub ntawv thiab luam tawm tom ntej
#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
Peb nias lub pob "Xim" thiab yuav tsum tsis txhob muaj qhov yuam kev.
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)".
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
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.
Ua tsaug rau koj cov lus qhia thiab kev ua haujlwm zoo!
Tau qhov twg los: www.hab.com