ããæ¥ãç§ã¯ã¯ã¬ã€ãžãŒãªã¢ã€ãã¢ãæãã€ããŸãã
ãããžã§ã¯ãã«ãNanonyam (Nanonyam)ããšããååãä»ããããŽãèããŸãã (5 åéæããŸãã)ã
Arduino ã®èŠ³ç¹ããèãã人ã«ãšã£ãŠãNanonyam 㯠Windows ãå¶åŸ¡ããããã®ä»®æ³ Arduino ã·ãŒã«ãã§ãããšèšããŸãã
ã€ãŸããNanonyamã¯AVRãã€ã³ã³ã®ãã¡ãŒã ãŠã§ã¢(ATMEGA2560æšå¥š)ããã€ãã³ãŒããšããŠäœ¿çšããä»®æ³ãã·ã³ã§ãã ãã®ä»®æ³ãã·ã³ã®å éšã«ã¯ AVR ã³ã¢ ã·ãã¥ã¬ãŒã¿ããããŸãããSRAM ã¢ãã¬ã¹ 0x0060 ïœ 0x01FF ã«ããåšèŸºããã€ã¹ã®ä»£ããã«ãä»®æ³é¢æ° (Windows API é¢æ°ãå«ã) ãžã®ç¹å¥ãªã€ã³ã¿ãŒãã§ã€ã¹ããããŸãã ãããŠãããã§ããã«ç解ããããšãéåžžã«éèŠã§ãããã¡ã€ã«ã®åé€ããã£ã¹ã¯ã®ãã©ãŒããããªã©ã®é¢æ°ã誀ã£ãŠåŒã³åºããªãããã«ãNanonyam ã®ã³ãŒãã¯æå®ãããã¡ã¢ãªç¯å²ã«ã¢ã¯ã»ã¹ããŠã¯ãªããŸããã SRAM ã¡ã¢ãªã®æ®ãã®ç¯å²ã¯ 0x0200 ïœ 0xFFFF (ããã¯å®éã®ãã€ã¯ãã³ã³ãããŒã©ãããå€ã) ã§ããŠãŒã¶ãŒã¯ããããç®çã«äœ¿çšã§ããŸãã å®éã®ãã€ã¯ãã³ã³ãããŒã©ãŒã®ãã¡ãŒã ãŠã§ã¢ (ãŸãã¯å¥ã®ã¢ãŒããã¯ãã£ã®ãã¡ãŒã ãŠã§ã¢) ã®èª€ã£ãèµ·åã«å¯Ÿããç¹å¥ãªä¿è·ãããããšã«ããã«æ°ã¥ããŸããããå±éºãªãæ©èœãã¢ã¯ãã£ãã«ããåã«ãç¹å¥ãªããªãããŒãªä»®æ³é¢æ°ãåŒã³åºãå¿ èŠããããŸãã ä»ã«ãããã€ãã®ã»ãã¥ãªãã£æ©èœããããŸãã
Nannyam çšã®ããã°ã©ã ãäœæããã«ã¯ãçŸåšå©çšå¯èœãªãã¹ãŠã®ä»®æ³é¢æ°ãå®è£
ããç¹å¥ãªã©ã€ãã©ãªã䜿çšããå¿
èŠããããŸãã Nannyam ä»®æ³ãã·ã³ãšãã®ã©ã€ãã©ãªãããŠã³ããŒãããŸãã
Nannyam ã¯å®¶åºçšããã³åæ¥çšã«ç¡æã§äœ¿çšã§ããŸãã Nannyam ããã°ã©ã ã¯ãçŸç¶ã®ãŸãŸãã§æäŸãããŸãã ãœãŒã¹ã³ãŒãã¯æäŸãããŸããã
ãã®ããã°ã©ã ã¯çŸåšãã¹ã段éã«ãããŸãã Windowsçšã®ç°¡åãªããã°ã©ã ãäœæã§ããçŽ200ã®ä»®æ³é¢æ°ãå®è£
ã
ã³ãŒãçšã®ã¡ã¢ãªã¯ 256 KB ãããªãããããã®ãããªä»®æ³ãã·ã³ã§è€éãªãã®ãäœæããŠãæ©èœããªãããšã¯æããã§ãã ããŒã¿ã¯å¥ã®ãã¡ã€ã«ã«ä¿åã§ããã°ã©ãã£ãã¯éšåã®ãããã¡ã¯å€éšã«å®è£
ãããŸãã ãã¹ãŠã®é¢æ°ã¯ç°¡çŽ åããã8 ããã ã¢ãŒããã¯ãã£ã«é©åããŠããŸãã
ãããã£ã ã§ã¯äœãã§ããŸãã? ããã€ãã®åé¡ãæãã€ããŸããã
ããã°ã©ã ãããã¯ã®éçº
ãã€ãŠã128x64 ãããã®ã°ã©ãã£ã㯠ãã£ã¹ãã¬ã€çšã«è€éãªã¡ãã¥ãŒããã¶ã€ã³ããå¿ èŠããã£ãããšããããŸãã ãã¯ã»ã«ãã©ã®ããã«èŠãããã確èªããããã«ãã¡ãŒã ãŠã§ã¢ãå®éã®ãã€ã¯ãã³ã³ãããŒã©ãŒã«åžžã«ããŠã³ããŒãããã®ã¯æ¬åœã«å«ã§ããã ããã§Nanonyamã®ã¢ã€ãã¢ãçãŸããŸããã äžã®å³ã¯ãåãã¡ãã¥ãŒã®é ç®ã® XNUMX ã€ãå®éã® OLED ãã£ã¹ãã¬ã€ããååŸããç»åã瀺ããŠããŸãã ããã§ãå®éã®ããã€ã¹ããªããŠãäœæ¥ã§ããããã«ãªããŸããã
Nannyam (æçµçãªã¢ã€ãã¢) ã¯ãã°ã©ãã£ãã¯ã¹ (衚瀺ãã€ã³ãžã±ãŒã¿ãŒãã·ãã¥ã¬ãŒãã§ãã)ããã¡ã€ã« (ãã°ãäœæãããããã¹ã ããŒã¿ãèªã¿èŸŒãã ãã§ãã) ãæäœãããã COM ããŒããåããããŒããŒã (åæã«æ倧 10 åã®ãã¿ã³ãèªã¿åãããšãã§ããŸã) (ãã¡ãã¯å¥ã®ã¢ã€ãã ã§ã)ã
ã¯ã€ãã¯ããã°ã©ã ã®äœæ
ããšãã°ã100500 åã®ããã¹ã ãã¡ã€ã«ãè¿ éã«åŠçããå¿ èŠããããšããŸãã ãããããéããåçŽãªã¢ã«ãŽãªãºã ã«åŸã£ãŠãããã«å€æŽããä¿åããŠéããå¿ èŠããããŸãã ããªãã Python ã®ãã¹ã¿ãŒã§ããã°ããã¹ãŠãåããŠããããšãç¥çŠããŸãã ããããããªããçç·Žã® Arduino ã§ããã° (ãããŠããããã人ã¯ããããããŸã)ãNannyam ããã®åé¡ã®è§£æ±ºã«åœ¹ç«ã¡ãŸãã ããã Nannyam ã§ã®ç§ã® XNUMX çªç®ã®ç®æšã§ããããã¹ãåŠçãã¹ã¯ãªãŒã³ã·ã§ããã®æ®åœ±ãããŒã¹ãããŒã¯ã®ã·ãã¥ã¬ãŒã·ã§ã³ãªã©ã®å€ãã®äŸ¿å©ãªæ©èœãã·ã¹ãã ã«è¿œå ããããšã§ã (ã¡ãªã¿ã«ããããã¯ãã¹ãŠãã§ã«ååšããŠããŸã)ããŸããæ¥åžžçãªã¿ã¹ã¯ã解決ããããã®ä»ã®å€ãã®æ©èœãè¿œå ããããšã§ãã ã
COMããŒãçµç±ã§ããŒããŠã§ã¢ããã¹ããã
Nannyam ã¯ãã¢ã«ãŽãªãºã ã«åŸã£ãŠåäœãã端æ«ãšããŠæ©èœããŸãã å°ããªã¡ãã¥ãŒãæç»ããŠããã€ã¹ãå¶åŸ¡ããããŒãããåä¿¡ããããŒã¿ã衚瀺ã§ããŸãã åæã®ããã«ãã¡ã€ã«ã«ããŒã¿ãä¿åãããããã¡ã€ã«ããããŒã¿ãèªã¿åã£ããã§ããŸãã ããŒããŠã§ã¢ã®åçŽãªãããã°ãšãã£ãªãã¬ãŒã·ã§ã³ãããã³åçŽãªä»®æ³èšåšã³ã³ãããŒã« ããã«ã®äœæã«äŸ¿å©ãªããŒã«ã§ãã åŠçãè¥ãç§åŠè ã«ãšã£ãŠããã®ãããžã§ã¯ãã¯éåžžã«åœ¹ç«ã¡ãŸãã
ããã°ã©ãã³ã°ç ä¿®
ãã ããArduino ãããžã§ã¯ãå šäœãšåæ§ãNanonyam ã®äž»ãªæçšæ§ã¯ãæ©èœãã€ã³ã¿ãŒãã§ã€ã¹ãããŒãããŒããŒã®ç°¡çŽ åã«ãããŸãã ãããã£ãŠããã®ãããžã§ã¯ãã¯åå¿è ããã°ã©ãã Arduino ã®ã¬ãã«ã«æºè¶³ããŠãã人ã«ãšã£ãŠèå³æ·±ããã®ãšãªãã¯ãã§ãã ã¡ãªã¿ã«ãç§èªèº«ã¯ããã£ãš WinAVR ã AVR Studio ã䜿ã£ãŠããŠãã¢ã»ã³ãã©ããå§ãããããArduino ã«ã€ããŠã¯ãŸã 詳ããå匷ããŠããŸããã ãããã£ãŠã以äžã®ãµã³ãã« ããã°ã©ã ã¯å°ãééã£ãŠããŸãããååã«æ©èœããŸãã
ããã«ã¡ã¯ããã«ïŒ
Nannyam ã®ããã€ãã®æ©èœã«æ £ããç°¡åãªããã°ã©ã ãäœæããŠã¿ãŸãããã Arduino ã§æžããŸãããéåžžã®æ¹æ³ã§ã¯ãªããä»ã§ããæ¹æ³ã§æžããŸã (ãã®ç°å¢ããŸã ããç解ããŠããªãããšã¯ãã§ã«èšããŸãã)ã ãŸããæ°ããã¹ã±ãããäœæããMega2560 ããŒããéžæããŸãã
ã¹ã±ããããã¡ã€ã«ã«ä¿åãã次ã«ã³ããŒããŸã
#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"
ArduinoããçŽæ¥ã€ã³ã¹ããŒã«ã§ããç¹å¥ãªã¢ãžã¥ãŒã«ãNanonyam for Arduinoããäœæããã®ãããã«æ£ããã§ãããã æãã€ãããããã«å®è¡ããŸãããä»ã®ãšããã¯ä»®æ³ãã·ã³ã®æäœã®æ¬è³ªã ãã瀺ããŠããŸãã 次ã®ã³ãŒããæžããŸãã
//СÑÐ°Ð·Ñ Ð¿ÐŸÑле запÑÑка ÑОÑÑеЌ ÑекÑÑ Ð² ПкМе
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);//ÐаЎеÑжка О ÑазгÑÑзка пÑПÑеÑÑПÑа
}
ãã®ããã°ã©ã ã§ã¹ã±ãããã
ããã§ãã¯ããã¿ã³ãæŒããŸããééãã¯ãããŸããã
次ã«ããã€ã㪠ãã¡ã€ã« (ãã¡ãŒã ãŠã§ã¢) ãå
¥æããå¿
èŠããããŸãã ã¡ãã¥ãŒãéžæããŠãã ãããã¹ã±ãã>>ãã€ã㪠ãã¡ã€ã«ã®ãšã¯ã¹ããŒã (CTRL+ALT+S)"
ããã«ãããXNUMX ã€ã® HEX ãã¡ã€ã«ãã¹ã±ãã ãã©ã«ããŒã«ã³ããŒãããŸãã ãã¬ãã£ãã¯ã¹ãwith_bootloader.megaãã®ãªããã¡ã€ã«ã®ã¿ãååŸããŸãã
Nannyam ä»®æ³ãã·ã³ã« HEX ãã¡ã€ã«ãæå®ããã«ã¯ããã€ãã®æ¹æ³ãããããããã¯ãã¹ãŠèª¬æãããŠããŸã
åæ§ã«ãAVR Studio ã WinAVR ãªã©ã®ä»ã®ç°å¢ã§ãããã°ã©ã ãäœæã§ããŸãã
ããã§ãããã£ã ãšã®ä»ãåãã¯çµãããŸãã äž»èŠãªã¢ã€ãã¢ã¯æ確ã§ããå¿
èŠããããŸãã
çããããæž
èŽããã ãããããŠè¯ãããã°ã©ã ãäœã£ãŠããã ããããããšãããããŸããïŒ
åºæïŒ habr.com